误删除了/usr/lib/*.so.*


9

当我安装MRTG,误我已删除/usr/lib/*.so.*/usr/lib/*.so

现在,我现在无法启动系统,它卡在了启动屏幕上,当我按PAGEDOWN按钮时,我看到有几件事无法加载。

但是,DHCP和WebMin正在运行,并且从Webmin中我可以看到系统日志,该日志告诉我杯子未装载,因为libpipeline.so.1缺少杯子和其他几个杯子。

我的电脑正在运行11.04



使用Ask Ubuntu来解决Ubuntu的特定问题。并且不要交叉张贴。如果您不确定它是否是特定于ubuntu的,请先在这里询问,我们将迁移它是否是特定于ubuntu的。

2
也是未来的秘诀...如果您知道自己在重启之前做了一些不好的事情.... 请不要重启。使系统保持运行并立即开始维修。我已经恢复/bin,并/etc在过去的那种方式

Answers:


5

由于您只删除了/usr/lib/*而不是/lib/*,因此可以恢复。我认为,恢复系统所急需的所有程序都只能使用中的库/usr/lib

引导至文本登录提示。如果正常启动未login:在文本模式下提示您,请仅使用最低服务启动。按住并Shift在计算机开始显示Grub提示时按住;您需要在BIOS初始化键盘之后但在加载Grub之前按此键,这在某些计算机上仅留下很小的时间范围,可能需要多次尝试。在Grub提示符下,按Down以突出显示单用户模式启动项并进行启动。

有了命令行后,请运行apt-get --reinstall install PACKAGE1 PACKAGE2 …重新安装中包含文件的软件包/usr/lib。您可以运行以下shell代码片段以获取要重新安装的软件包名称的列表:

egrep -l '/usr/lib/[^/]*\.so\.' /var/lib/dpkg/info/a*.list |
sed -e 's!^/var/lib/dpkg/info/!!' -e 's!\.list$!!'

某些软件包安装脚本可能要求存在其他软件包的库,因此您可能需要按特定顺序运行重新安装。如果发现软件包的安装脚本正在尝试使用特定程序,则可以找到该程序需要哪些库ldd。例如,这表明python缺少三个需要重新安装的库:

$ ldd /usr/bin/python | grep 'not found'
    libssl.so.0.9.8 => not found
    libcrypto.so.0.9.8 => not found
    libz.so.1 => not found

dpkg -S /usr/lib/libz.so.1揭示此文件来自zlib1g,依此类推。

如果发现apt-get无法下载软件包,请首先从实时CD下载一些关键软件包。zlib1glibssl0.9.8是您很可能在早期需要的两个软件包。


10

您可以花一个星期的时间查找丢失的所有内容,也可以花一个小时的时间从CD重新安装,然后将所有旧软件包找回。

我建议您首先引导到LiveCD环境中,以首先备份事物(将它们复制到外部USB驱动器或另一个分区),然后再重新启动。


2
的确,如果您不重新安装所有内容,可能会在几个月后弹出奇怪的故障,崩溃等信息。
2011年

3

/usr/lib坦率地说,其中包含了除启动关键软件以外的所有内容的共享库(这是/lib/您没有通过软件包管理器安装的东西,通常是/usr/local/lib)。

短版,您只管了系统。

现在,如果您仍然有/var/cache/apt/archives很多东西,只要有一点明智的魔术,您也许可以挽回局面。

检查它是否仍然包含以下软件包的存档:

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

这些软件包包含库/usr/libaptitude需要工作,如果你能找到的包中/var/cache/apt/archives,你可以用手动重新安装它们dpkg -i <packagename,并且一旦他们所有安装,性向应该能够运行。

然后,通过运行命令,aptitude reinstall ~i您将强制重新安装每个已安装的软件包,希望可以还原您的系统。我无法绝对保证,因为在这种情况下,您造成的损失确实非常大...


1

我很想从Ubuntu 11.04 live-CD引导并尝试将丢失的文件复制回去。

在执行任何操作之前,请检查您是否对用户生成的任何数据文件都有良好的备份。如果没有,我将引导Live-CD挂载HDD为只读,并尽快进行备份。


0

当我做类似的事情时,我很幸运在尝试重新启动之前意识到了这一点。此时,您的系统仍然可以正常工作。我的方法是使用相同版本的OS创建一个virtualbox,并从中复制丢失的文件。如果允许ssh访问您的virtualbox guest虚拟机,则可以从主系统上的终端使用rsync来仅吸入丢失的文件和链接。就我而言,缺少的文件不足,这是使用scp手动复制最容易/最安全的文件,因此以下内容未经测试(!)

sudo rsync -avu user@guestVB:/usr/lib /usr/lib

-a是归档模式(递归,复制符号链接和属性,包括时间戳,权限等)

-u跳过目标副本是否较新

-v冗长

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.