输入 rm -rf * 删除了 usr/bin 中的所有文件

输入 rm -rf * 删除了 usr/bin 中的所有文件

我是 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套件后,请至少下载dpkgapt包以某种方式,可能是在另一台机器上,或者在仍在运行的 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

如果这是一个虚拟机,没有什么困难:

  1. 保存已安装软件包的列表

    cd /var/lib/dpkg/info
    grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs.txt
    
  2. 在新虚拟机上安装相同的操作系统版本(i386 或 amd64)

  3. 在新鲜的机器上

    cd /var/lib/dpkg/info
    grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs2.txt
    
  4. 将内容复制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
    
  5. 现在新系统具有与/usr/bin损坏机器相同的内容

  6. 将损坏的机器的磁盘安装到新机器上,最后:

    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.现在我无法使用sudopkexec,因为我收到了错误消息必须由 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

相关内容