如何在 Windows 版 Ubuntu 上手动替换 libapt-private.so.0.0.0?

如何在 Windows 版 Ubuntu 上手动替换 libapt-private.so.0.0.0?

我在 Windows 上使用 Ubuntu,已经使用了一段时间了。/etc/debian_version将其命名为buster/sid。由于最近怀疑磁盘损坏,/usr/lib/x86_64-linux-gnu/libapt-private.so.0.0.0似乎已被一个仅包含(二进制)零的相同大小的文件替换。

apt当然,这会破坏并阻止其自我修复。

同事给了我一份相同文件的副本。但是,我找不到替换文件系统中该文件的方法。即使bash使用 Windows 管理员权限启动,然后在该 shell 中获取 root 权限,也不允许我重命名或替换该文件。

强烈建议不要尝试使用 Windows 工具(例如文件资源管理器和cmdshell)更改这些文件 - 但是,即使cmd以管理员权限运行也会出现“ Access is denied.

我如何在 Ubuntu for Windows 下替换此库文件? 有可能吗? Google 和 StackExchange 搜索没有帮助。

答案1

因此,我的 WSL 被破坏了,因为 Windows Defender 将我的检测libapt-private.so.0.0.0为木马。[在此处插入讽刺评论]

更新:这个SO答案报告了一些微软关于该问题的新闻

解决方案

首先,最烦人的是每次尝试删除或移动库时都会出现“权限被拒绝”错误。为了防止这种情况,请确保您以管理员身份操作:从提升的 cmd/powershell 打开 WSL shell并在那里工作。

接下来是(几乎)Imaginecat22答案的实现。

  1. 查找您的版本apt

    $ dpkg -l apt
    
    [. . .]
    ||/ Name                              Version               Architecture          Description
    +++-=================================-=====================-=====================-=======================================================================
    ii  apt                               1.6.11                amd64                 commandline package manager
    

    写下 的值Architecture

  2. 下载.deb

    大多数软件包都可以找到Ubuntu 软件包搜索

    但并非所有版本都可用,因此您可能需要手动下载:

    • 使用网络浏览器打开:

      https://launchpad.net/ubuntu/+source/apt/<VERSION>/

      替换为步骤 1 中返回<VERSION>的值,例如:Version

      https://launchpad.net/ubuntu/+source/apt/1.6.11/

    • 找出构建Architecture部分并选择与步骤 1 中的值匹配的构建。

    复制 URL 以下载文件apt_<VERSION>_<ARCHITECTURE>.deb。从 WSL Linux shell 下载软件包:

        $ wget https://launchpad.net/ubuntu/+source/apt/1.6.11/+build/16829590/+files/apt_1.6.11_amd64.deb
    
  3. 使用 dpkg 安装包

    $ dpkg -i apt_1.6.11_amd64.deb
    

应该用它覆盖你以前的版本和损坏的库。

答案2

我的 Windows Defender 刚刚删除了我的 sudo_libutil.so.0.0.0。我设法解决了该问题,而无需重新安装任何软件包。

我将答案发布到了 superuser.com这里

答案3

我刚刚遇到了同样的问题。只需获取一个新的 apt.deb 包,然后使用 dpkg -i 手动重新安装即可

我得到了https://packages.ubuntu.com/bionic/apt

然后运行 ​​apt update、upgrade、probably fix-broken 等等。

答案4

嘿,我遇到了完全一样的问题 - 以至于我一直在关注你的讨论并跟进。我创建了一个 Stack Overflow 帐户,只是为了让你知道我解决了这个问题!(这是我的第一篇帖子,哈哈) 诀窍是在另一台机器上安装(或像我一样安装)WSL,然后将 libapt-private.so.0.0.0 文件直接 scp 到目录中!

之后,我输入 sudo apt-get -f install 并且它像正常运行一样:)希望这会有所帮助!

相关内容