不小心删除了“/usr/share”文件夹

Mou*_*vre 16 data-recovery 18.04

系统不启动。不rm - R小心使用了。如何恢复系统?

N0r*_*ert 49

您需要重新安装所有包含文件的应用程序/usr/share

  1. 使用root 提示符恢复模式启动系统。

  2. 将 rootfs 重新挂载到读写模式mount -o rw,remount /

  3. 启动以太网接口并从 DHCP 服务器获取 IP 地址:(dhclient enp0s3ip a或 中检查正确的接口名称ifconfig -a)。

  4. 通过以下方式指定 DNS 服务器

    rm /etc/resolv.conf
    echo "nameserver 192.168.1.1" > /etc/resolv.conf
    
    Run Code Online (Sandbox Code Playgroud)

    (更改192.168.1.1为您的网关/路由器)

  5. 您需要修复dpkg软件包,因为它错过了/usr/share/dpkg/cputable文件(否则您将面临"E: error reading the cpu table"任何 apt/apt-get 命令)

    wget http://mirrors.kernel.org/ubuntu/pool/main/d/dpkg/dpkg_1.19.0.5ubuntu2.1_amd64.deb
    dpkg -i dpkg_1.19.0.5ubuntu2.1_amd64.deb
    
    Run Code Online (Sandbox Code Playgroud)

    或从缓存安装它:

    dpkg -i /var/cache/apt/archives/dpkg_*.deb
    
    Run Code Online (Sandbox Code Playgroud)
  6. 更新包缓存:

    apt-get update
    
    Run Code Online (Sandbox Code Playgroud)
  7. 重新安装基本组件

    apt-get install --reinstall debconf linux-base
    mkdir /usr/share/python
    apt-get install --reinstall python2.7-minimal python3-minimal
    
    Run Code Online (Sandbox Code Playgroud)
  8. 然后使用下面的单线:

    apt-get install --reinstall $(dpkg -S /usr/share/ | sed 's/,//g' | sed 's/: \/usr\/share//g')
    
    Run Code Online (Sandbox Code Playgroud)

    以上:

    • dpkg -S /usr/share/ 显示逗号分隔的包列表
    • sed 's/,//g' - 删除逗号
    • sed 's/: \/usr\/share//g'-删除: /usr/share到底

    这部分可能会失败并显示有关某些软件包的消息。例如,在我的 VM 上,我遇到了问题bsdmainutils,所以我重新安装了它们:

    dpkg -i /var/cache/apt/archives/bsdmainutils_*.deb
    
    Run Code Online (Sandbox Code Playgroud)

    然后在上面重新运行单线。

  9. 修复损坏的包

    dpkg --configure -a
    apt-get install -f
    
    Run Code Online (Sandbox Code Playgroud)
  10. 最后修复/etc/resolv.conf链接

    rm /etc/resolv.conf
    ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
    
    Run Code Online (Sandbox Code Playgroud)
  11. 重启。

注意:生成的固定系统在运行sudo apt-get checksudo debsums --all --changed.