无法在我自己的用户和 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
并搜索-i
aka--login
以了解其-i
作用的详细信息。