Answers:
通常,我倾向于重新安装(从您绝对应该拥有的备份中)。但是我感觉有点黑,所以这是另一种方式(假设您的系统安装在/target
):
获取包含以下文件的所有已安装软件包的列表/bin
:
grep ^/bin/ /target/var/lib/dpkg/info/*.list | sed 's%^.*/\([^/\.]*\).list%\1%' >/tmp/pkglist
(在我的Debian Squeeze系统上,总共有34个软件包,几乎所有软件包都是核心软件包)
下载其中的每个程序包(我不必为此编写脚本,因此只需打下packages.ubuntu.com并将其下载到下方的某个位置/target
)。如果您幸运的话,其中一些软件包可能仍在中浮动/target/var/cache/apt/archives
。
对于每个软件包,请运行/target/usr/bin/dpkg -x <package> /target
。我可以肯定的dpkg
是,这些天都是自给自足的,不应大声疾呼/bin
自己。
一旦使系统恢复正常,就应确保并运行apt-get --reinstall install <all the packages from step 1>
,因为(因为您正在运行预发行版,Sysadmin Cat表示在生产系统上是禁止发行)软件包的版本您刚刚提取的内容可能与之前系统上的内容有所不同,并且您将需要确保系统确切知道什么。
/bin
,并且我不想依靠救援系统中特定于Debian的任何东西来使它成为对于将来的发现者来说尽可能通用。
/bin
吗?我应该重新安装系统上的每个软件包,还是仅重新安装列表生成的软件包?(还:谢谢,我爱你!)
/bin
-大多数软件包都应将其所有数据放在下/usr
。在我的系统上,列表中仅包含几个非必需的软件包(例如zsh
)/bin
。顺便说一句,投票是表达爱意的好方法...
尽管您的策略可能会起作用(很有可能,但是一旦您复制回bin目录,然后执行apt-get重新安装系统中所有软件包的操作,就会有更多的机会),但将来可能会出现问题,因为您可能会不稳定的服务器。
如果那会发生在我身上,我将重新安装并从日常备份中还原。您有每日备份-灾难恢复计划-是吗?
如果您没有灾难恢复计划,建议您备份所有要保留的配置文件和数据,然后重新安装。这样,您可以确定将再次获得稳定的服务器。
文件不见了。虽然您可以尝试“取消删除”文件-但我不建议这样做。
注意:我没有运行Ubuntu(并且有一段时间没有使用Debian发行版了)。但是,在过去的所有类似情况下,我都进行过各种发行版恢复。
您的最佳做法:
/mnt/mint
)#dpkg --admindir = / mnt / mint / var / lib / dpkg -l
#apt-get -o RootDir = / mnt / mint ....
/mnt/mint
-不确定/bin
liveCD的内容复制到,/mnt/mint/bin
但我不知道薄荷的liveCD是否使用busybox可能会使事情复杂化-在这种情况下,替代#1似乎更安全。通常,这应该通过“重新安装”所有内容来返回文件。您可以执行更多“聪明”的技巧,并查询在/ bin中删除了二进制文件的所有软件包
dpkg-query -S /bin
做的比你同样的grep .. | sed
节?如果需要清理列表以每行列出一个软件包名称,则dpkg-query -S /bin | sed 's/\,\ /\n/g'
可以使用(尽管在最后一行有多余的:/ bin)。