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)

エコーの出力を投稿して$PATHください。
カオス14年

@chaos、それを取得する方法?
user87142 14年

@ user87142 echo $PATHターミナルを入力するだけです。
ジョンWHスミス14年

@chaos、I get this ... / usr / local / bin:/ usr / bin:/ bin:/ usr / games
user87142 14年

そして、出力はcat /etc/environment
カオス14年

回答:


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:ルートアカウントを直接使用する

を使用しないで、コマンドを実行するようにsudo切り替えてrootください。これを行うには、次のコマンドのいずれかを実行します。

$ sudo -i
$ su 

ルートとしてログインしたら、apt-getコマンドを再度実行します。

# apt-get ...

PATHただし、最初にルートを設定する必要がある場合があります。/root/.bashrc(もちろんルート権限で)編集し、次の行を追加します。

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
ルートユーザーを使用しようとしましたが、機能しませんでした。パスもチェックしました。
user87142 14年

@ user87142まあ、/sbin不足しているので、正しくチェックしませんでした。もう一度設定してみてください(ソリューション1および/または3)。ソリューション2を編集して、アカウントをインタラクティブに使用するときにルートのPATHを編集する方法を含めました。
ジョンWHスミス14年

確認しました......デフォルトenv_resetデフォルトsecure_path = "/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin"
user87142

その解決策を見つけましたか?
ブリジェシュヴァレラ

彼の3番目の解決策のバリエーションは、export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/bin最初に、次にsudo -E apt install nginxその後です。この-Eスイッチは--preserve-env、したがって、環境変数をsudoセッションにエクスポートすることを意味します。
マークハドソン

2

どういうわけか私は同じ問題を抱えていた。

エラーメッセージを注意深く読んでください。解決策が見つかります。次のようなメモがあります:

注:通常、ルートのPATHには/ usr / local / sbin、/ usr / sbin、および/ sbinが含まれている必要があります。

その後、パスを確認しましたが、パスに/ sbinがありませんでした。

echo $ PATH

それから私は追加し、問題はなくなった。:)

export PATH = "$ PATH:/ sbin"

チャラム!


かなり確信してこれはすでにによってカバーされている既存の答えが、
ジェフ・シャラー

1

今日、この問題が発生したため、行をコメントアウトして解決しました(#を使用)

Defaults    exempt_group=sudo

/ etc / sudoersファイルから

# visudo

ルートとして

この変更により、sudoは同じファイルに設定されているデフォルトのsecure_path変数を使用します。


これにより、Ubuntu 18.04.1
sw00
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.