dpkg在PATH变量中找不到ldconfig / start-stop-daemon


41

我试图安装安装bsd-mailx包的实用程序,但是我想知道该错误。

这是我得到的错误:

Preconfiguring packages ...
dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)

您可以张贴echo的输出$PATH吗?
2014年

@chaos,如何获得?
user87142 2014年

@ user87142只需输入echo $PATH一个终端。
约翰·史密斯


和输出cat /etc/environment
2014年

Answers:


59

首先,您真正感兴趣的行是:

dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.

Debian和Ubuntu用户已经多次报告了这些错误(您可以实际使用Google来获取更多信息)。PATH当用户尝试通过执行命令时,似乎未正确设置变量sudo,这可能是您要尝试执行的操作。

解决方案1:设置sudo的默认安全路径

/etc/sudoers通过visudo在终端中运行来打开,并确保文件包含以下行:

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

有关此问题的更多信息,请参见此处(问题和提示>未设置PATH)。

解决方案2:直接使用root帐户

不要使用sudo,只需切换root到运行命令即可。运行以下命令之一来执行此操作:

$ sudo -i
$ su 

以root用户身份登录后,只需apt-get再次运行命令:

# apt-get ...

但是,您可能必须设置root为PATHfirst。编辑/root/.bashrc(当然具有root权限),并添加以下行:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

解决方案3:尝试在执行时将PATH变量传递给sudo

只需在sudo调用前加上PATH变量的重新定义即可:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin sudo apt-get ...

1
我尝试使用root用户但没有用,我也检查了路径。
user87142 2014年

@ user87142好吧,由于/sbin丢失,您没有正确检查。尝试再次设置(解决方案1和/或3)。我对解决方案2进行了编辑,以包括一种在交互式使用帐户时编辑root的PATH的方法。
约翰·史密斯

我已经检查过……默认值env_reset默认值secure_path =“ / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin”
user87142

您找到解决方案了吗?
Brijesh Valera

他的第三个解决方案的一种变化是export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/bin首先,然后是sudo -E apt install nginx之后。因此,-E切换意味着--preserve-env将环境变量导出到sudo会话。
马克·哈德森

2

不知何故我遇到了同样的问题。

请仔细阅读您的错误消息,您将找到解决方案。有一条说明说:

注意:root的PATH通常应该包含/ usr / local / sbin,/ usr / sbin和/ sbin。

然后,我检查了路径,并以某种方式丢失了路径中的/ sbin。

回声$ PATH

然后我添加了,问题消失了。:)

导出PATH =“ $ PATH:/ sbin”

查拉姆!


很肯定这已经涵盖现有的答案,虽然
杰夫·夏勒

1

我今天遇到了这个问题,并通过注释掉行(使用#)解决了这个问题

Defaults    exempt_group=sudo

从我的/ etc / sudoers文件中使用

# visudo

作为根

此更改将导致sudo使用同一文件中设置的默认secure_path变量。


这在Ubuntu 18.04.1上为我解决了问题
sw00
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.