当我安装MRTG,误我已删除/usr/lib/*.so.*
和/usr/lib/*.so
现在,我现在无法启动系统,它卡在了启动屏幕上,当我按PAGEDOWN按钮时,我看到有几件事无法加载。
但是,DHCP和WebMin正在运行,并且从Webmin中我可以看到系统日志,该日志告诉我杯子未装载,因为libpipeline.so.1
缺少杯子和其他几个杯子。
我的电脑正在运行11.04
当我安装MRTG,误我已删除/usr/lib/*.so.*
和/usr/lib/*.so
现在,我现在无法启动系统,它卡在了启动屏幕上,当我按PAGEDOWN按钮时,我看到有几件事无法加载。
但是,DHCP和WebMin正在运行,并且从Webmin中我可以看到系统日志,该日志告诉我杯子未装载,因为libpipeline.so.1
缺少杯子和其他几个杯子。
我的电脑正在运行11.04
Answers:
由于您只删除了/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下载一些关键软件包。zlib1g
这libssl0.9.8
是您很可能在早期需要的两个软件包。
/usr/lib
坦率地说,其中包含了除启动关键软件以外的所有内容的共享库(这是/lib/
您没有通过软件包管理器安装的东西,通常是/usr/local/lib
)。
短版,您只管了系统。
现在,如果您仍然有/var/cache/apt/archives
很多东西,只要有一点明智的魔术,您也许可以挽回局面。
检查它是否仍然包含以下软件包的存档:
libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams
这些软件包包含库/usr/lib
是aptitude
需要工作,如果你能找到的包中/var/cache/apt/archives
,你可以用手动重新安装它们dpkg -i <packagename
,并且一旦他们所有安装,性向应该能够运行。
然后,通过运行命令,aptitude reinstall ~i
您将强制重新安装每个已安装的软件包,希望可以还原您的系统。我无法绝对保证,因为在这种情况下,您造成的损失确实非常大...
当我做类似的事情时,我很幸运在尝试重新启动之前意识到了这一点。此时,您的系统仍然可以正常工作。我的方法是使用相同版本的OS创建一个virtualbox,并从中复制丢失的文件。如果允许ssh访问您的virtualbox guest虚拟机,则可以从主系统上的终端使用rsync来仅吸入丢失的文件和链接。就我而言,缺少的文件不足,这是使用scp手动复制最容易/最安全的文件,因此以下内容未经测试(!)
sudo rsync -avu user@guestVB:/usr/lib /usr/lib
-a是归档模式(递归,复制符号链接和属性,包括时间戳,权限等)
-u跳过目标副本是否较新
-v冗长