在 PATH 中找不到“dpkg-deb”或不可执行

在 PATH 中找不到“dpkg-deb”或不可执行

无法在我自己的用户和 root 上使用 apt 删除或安装任何内容。每当我尝试时,我都会收到以下错误:

dpkg: warning: 'dpkg-deb' not found in PATH or not executable
dpkg: error: 1 expected program not found in PATH or not executable
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin

我检查了 $PATH 变量(在 root 以及我自己的用户中),它包含应包含的所有内容:

ranran9991@Ran-Mint ~ $ sudo -i
[sudo] password for ranran9991: 
Ran-Mint ~ # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/lib/jvm/java-11-oracle/bin:/usr/lib/jvm/java-11-oracle/db/bin

输出grep -i path /etc/sudoers

Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

输出sudo find / -mount -name dpkg-deb -exec ls -ld {} +

ranran9991@Ran-Mint ~ $ sudo find / -mount -name dpkg-deb -exec ls -ld {} +
[sudo] password for ranran9991: 
lrwxrwxrwx 1 root root      4 Nov 24  2018 /usr/share/bash-completion/completions/dpkg-deb -> dpkg
-rwxr-xr-x 1 root root 153952 Oct  4  2018 /var/lib/docker/overlay2/8c4b3545f8b2b1fd424a8054dfa0a631959619f0dc34efe9ca5c5e52f0fe7696/diff/usr/bin/dpkg-deb

我正在使用肉桂薄荷 18.3。

我不确定该怎么做,希望得到一些帮助。

答案1

由于您仍然可以运行dpkg,因此至少部分dpkg包仍然存在。要恢复dpkg-deb,您应该尝试重新安装dpkg

  • 下载适当的包文件(Mint 18.3 基于 Ubuntu 16.04,因此请在这一页获得适当的链接;我在这里提供的下载链接假设您正在使用amd64

    wget https://launchpad.net/ubuntu/+archive/primary/+files/dpkg_1.18.4ubuntu1.6_amd64.deb
    
  • 安装它

    sudo dpkg -i dpkg_1.18.4ubuntu1.6_amd64.deb
    

如果失败,您将需要采用更手动的方法,如建议的那样阿尔维德的回答:

ar x dpkg_1.18.4ubuntu1.6_amd64.deb data.tar.gz
tar xf data.tar.gz ./usr/bin/dpkg-deb
sudo install usr/bin/dpkg-deb /usr/bin

然后使用安装包dpkg来确保一切设置正确。

答案2

将这些目录(/usr/local/sbin/usr/sbin/sbin)添加到您的用户的 PATH 中。

它没有坏处,而且通常很有用——许多“root”命令可以提供有用的信息您有读取权限即使他们无法更改任何内容,因为您的非 root 用户没有写访问

或者,apt使用sudo -i apt.....而不是仅运行sudo apt.....。这将确保apt命令在根目录中运行登录shell(因此执行 root 的 .profile 或 .bash_profile,并适当设置 PATH)。

请参阅man sudo并搜索-iaka--login以了解其-i作用的详细信息。

相关内容