dpkg は PATH 変数で ldconfig/start-stop-daemon を見つけることができません

dpkg は PATH 変数で ldconfig/start-stop-daemon を見つけることができません

ユーティリティをインストールしようとしました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)

答え1

まず、皆さんが本当に興味を持っているラインは次のとおりです。

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 

root としてログインしたら、apt-getコマンドをもう一度実行します。

# apt-get ...

ただし、最初にroot を設定する必要があるかもしれませPATHん。編集し/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 ...

答え2

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

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

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

その後、パスを確認したところ、どういうわけかパスに /sbin がありませんでした。

$PATHをエコーする

追加したら問題はなくなりました。:)

PATH="$PATH:/sbin" をエクスポートします

チャラム!

答え3

質問に説明がないため、この状況で正確な問題を特定するのは困難ですが、私は最近同じ問題に直面しました。

user@debian:su
Password: 
root@debian:/home/user/Downloads# dpkg -i [Some package]
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

解決策は、(一般的にはより良い方法である)su -の代わりにを使用することです。suこの質問に対する答え):

user@debian:su -
Password: 
root@debian:~# cd /home/user/Downloads/
root@debian:/home/user/Downloads# dpkg -i [Some package]

答え4

ここで示した解決策はどれも役に立たなかったので、何が起こったのか、そしてそれを解決するために何をしたのかを説明します。

Q4OS システムに Insync をインストールしようとしましたが、アプリが libc6 >= 2.32 を必要とし、Q4OS が 2.31 を使用しているためできませんでした。2.32 の libc6 deb を見つけたところ、悪夢が始まりました。システム全体が壊れてしまいました。apt-get動作が停止し、システムが正常に動作するには libc6 2.31 が必要であると表示されます。当時は、バージョンをダウングレードする方法を知りませんでした。そのため、再起動後、システムは起動せず、起動時に次のメッセージが表示されてハングアップしました。

A start job is running for Hold until boot process finishes up (Xmin Xs/no limit)

ターミナルを変更しようとしましたが、うまくいきませんでした。幸い、Linux は VMWare で実行されており、SSH を使用してマシンに接続できました。VM -> SSH -> Connect to SSH...

その後、いろいろ試しましたが、うまくいきませんでした。次の方法でアップグレードを試みました:

sudo apt install upgrade

メッセージには、走らなければならなかったと書かれています:

sudo apt --fix-broken install

しかし、それを実行しようとすると、それ自体を含む多くのパッケージが削除されると言われましたq4os-desktop。それで、条件に同意して試してみました。これ以上何を失うことがあるでしょうか?

その後、状況はさらに悪化しました。何も実行できませんでした。次のような質問のエラーが発生しました:

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 自体ではなく、ldconfig が libc6 の一部であり、削除されていたことです。ほとんどすべてが libc6 と ldconfig に依存しているため、何もできませんでした。ソースから libc6 をコンパイルしようとしましたが、成功しませんでした。依存関係が多数あり、依存関係をインストールしようとすると、ライブラリが libc6 の何かを使用しようとしました。一種の依存関係ループです。

そこで、Q4OS ライブ CD でシステムを再起動し、バイナリ ldconfig を にコピーしました/usr/sbin/ldconfig。 うまくいきました。 これで、 がapt-get再び動作し始めました (完璧ではありませんが...)。 そこで、ライブラリをダウングレードする方法を発見しました。

sudo apt install libc6=2.31-13+deb11u3

どのバージョンを使用するかわからない場合は、次を実行してください。

apt list --installed | grep libc6

Live CD 内にあります。出力は次のようになります。

libc6/stable,now 2.31-13+deb11u3 amd64 [installed]

その後、Q4OS を再度インストールすることができました。

sudo apt install q4os-desktop

再起動後、すべて正常に戻りました。

しかし、Insync を実行すると、5 秒後にアプリがクラッシュします。

関連情報