不小心删除了/usr/lib,如何恢复?

不小心删除了/usr/lib,如何恢复?

我知道我不应该这么做,但它确实发生了(Ubuntu 12.04.1 LTS),作为 root 用户,我删除了 /usr/lib 文件夹。有什么办法可以恢复它吗?

答案1

有一些工具可以帮助您恢复已删除的文件,但通常这是一个缓慢且主要手动的过程。搜索引擎是您的朋友。

启动实时 CD 或 USB、挂载系统的根分区、然后将 /usr/lib 复制到 /mnt/{root.drive}usr/lib 可能会更容易,但您只会获得默认的 lib 文件,而不是您可能添加的文件。

我认为最好的选择是重新安装操作系统。当然,你会希望将数据放在一个单独的分区上,这个分区在安装过程中不会被格式化,在我看来,这是个好习惯。

答案2

假设apt-get仍然有效,您可以尝试使用dpkg来获取包含文件的软件包列表,然后使用来安装它们apt-get。您可以使用这个 Ruby 脚本,但同样的想法可以在 python 或 bash 中实现:

raw_pkgs = `dpkg --get-selections`.split("\n")
need_reinstall = []

path="/usr/lib"

raw_pkgs.each do |x|
    pkg = x.split(" ")[0]
    if `dpkg -L #{pkg}`.include? path
        puts "-> #{pkg} has files in #{path}"
        need_reinstall << pkg
    end
end
puts "\nYou need to reinstall #{need_reinstall.size} packages:"
puts "\tsudo apt-get install --reinstall " + need_reinstall.join(" ")

这是一个有点蛮力的解决方案并且会花费一些时间(在我的系统中,列出的是安装的总软件包的~65%...),但是应该可以起作用。

答案3

然后创建一个 ubuntu USB 启动。然后启动到“尝试 ubuntu”模式。然后挂载你的磁盘以访问 /usr/lib 文件夹从实时模式访问主目录中的文件。将 /usr/lib 从其他计算机复​​制到您的计算机。重新启动。然后您的计算机几乎可以正常工作,并且几乎所有基本功能都可以使用。您可以稍后安装缺少的库

答案4

import subprocess
from functools import cache


def main():
    run_cmd = subprocess.run(["dpkg", "--get-selections"], capture_output=True)
    path = "/usr/lib/python3"
    output = {x for x in run_cmd.stdout.decode().split("\n")}
    app_box = []

    for x in output:
        pkg = x.split("\t")[0]
        the_process = {x for x in subprocess.run(["dpkg", "-L", pkg], capture_output=True).stdout.decode().split("\n")}
        if path in the_process:
            print(f"-> {pkg} has file in {path}")
            app_box.append(pkg)
        else:
            print(f"-> {pkg} has no file in {path}")

    print(f"you need to reinstall {len(app_box)} package")
    print(f"\tsudo apt install --reinstall {' '.join(app_box)}")

if __name__ == "__main__":
    main()

如果您对@Salem 提供的答案的 Python 版本感到好奇……就是这里。嗯,不是那么高效,但它有效,哈哈。

相关内容