我是 Linux 新手,今天安装了 Ubuntu 12.04。我在/usr/bin
输入命令时不小心删除了所有内容rm -rf *
。
我不知道什么是安装,我想学习一下,但目前我认为我唯一的办法就是重新安装所有内容。请告诉我现在重新安装所有内容的方法。这对我很有帮助。
答案1
由于您今天才安装,请重新安装。虽然您可以从中恢复,但这比重新安装要费力得多。
要从删除 中恢复/usr/bin
,您需要重新安装该目录中包含文件的所有软件包。您可以使用此命令列出受影响的软件包:
cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//'
然后,您需要找到某种不依赖任何已删除程序的下载软件包的方法。由于您已删除dpkg
低级软件包安装实用程序,因此您需要先从某个地方获取它。从运行相同版本 Ubuntu 的其他机器上获取它,或者下载dpkg
在另一台机器上安装软件包并从中提取程序。您不仅需要/usr/bin/dpkg
该软件包中的所有其他程序,update-alternatives
还需要所有名为的程序/usr/bin/dpkg-*
。同样,由于删除了这么多程序,复制可能会很棘手,因此您可能需要重新启动到救援 CD/USB 来执行此操作。
获得dpkg
套件后,请至少下载dpkg
和apt
包以某种方式,可能是在另一台机器上,或者在仍在运行的 Web 浏览器中。
然后apt
使用命令手动安装
dpkg -i /path/to/apt_0.8.16~exp12ubuntu10.2.deb
如果收到有关缺少命令的错误,请先重新安装相应的软件包。然后重新安装所有受影响的软件包:
apt-get --reinstall install $(grep -l '^/usr/bin/' *.list | sed 's/\.list$//')
再次,根据您的情况,只需进行完全重新安装即可。
答案2
/usr/bin/
包含系统上安装的大多数程序。
再次安装 Ubuntu 是重新获得可运行系统的最简单、最快捷的方法。
答案3
如果这是一个虚拟机,没有什么困难:
保存已安装软件包的列表
cd /var/lib/dpkg/info grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs.txt
在新虚拟机上安装相同的操作系统版本(i386 或 amd64)
在新鲜的机器上
cd /var/lib/dpkg/info grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs2.txt
将内容复制
packs.txt
到新系统上,您可以执行以下操作:install=$(diff -c ~/packs2.txt ~/packs.txt | grep "^- " | cut -d' ' -f2 | xargs echo ) apt-get install -y --force-yes $install remove=$(diff -c ~/packs2.txt ~/packs.txt | grep "^+ " | cut -d' ' -f2 | xargs echo ) apt-get purge -y --force-yes $remove
现在新系统具有与
/usr/bin
损坏机器相同的内容将损坏的机器的磁盘安装到新机器上,最后:
rsync -av /usr/bin /mnt/usr/bin
利润
答案4
遇到了同样愚蠢的问题...下面是我为使一切重新运转所做的事情:
1.就像@Gilles的回答一样,列出你的包裹:
cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/my_packages1.txt
2.插入一张装有相同 Ubuntu 版本的 Live CD,从中启动并复制目录/usr/bin
。我的硬盘上装有 Ubuntu 的分区已挂载,因此这很简单
cp -R /usr/bin /media/something/usr/bin
3.现在我无法使用sudo
或pkexec
,因为我收到了错误消息必须由 uid 0 拥有,并且设置了 setuid 位。因此,我必须改变这种情况,通过从 GRUB 启动到 root shell。(参见这里如何做到这一点德国网站看一些图片。)现在:
mount -o remount,rw /
chown -R root:root /usr/bin
chmod a=rx,u+ws /usr/bin/sudo
chmod a=rx,u+ws /usr/bin/pkexec
重新启动进入正常的 Ubuntu 系统。
4.重新安装你的软件包:
sudo xargs -a ~/my_packages1.txt apt-get install --reinstall
rm ~/my_packages.txt
5.仍然缺少许多软件包。debsums
帮助我找到这些软件包并手动安装它们。(也许步骤 1 和 4 已经过时了,但我还没有尝试过......)
sudo apt-get install debsums
sudo debsums_init
# This lets debsums find packages with missing files, filters the package names and writes the unique ones to the file.
sudo debsums -cs 2>&1 >/dev/null | sed -e 's/\(.*\)from \(.*\) package\(.*\)/\2/' | uniq -u > my_packages2.txt
sudo xargs -a ~/my_packages2.txt apt-get install --reinstall