dpkg tidak dapat menemukan ldconfig / start-stop-daemon dalam variabel PATH

41

Saya mencoba untuk menginstal bsd-mailxutilitas paket terinstal namun saya bertanya-tanya tentang kesalahan.

Ini adalah kesalahan yang saya dapatkan:

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)
pengguna87142
sumber
Bisakah Anda memposting output echo $PATH?
kekacauan
@ chaos, Bagaimana cara mendapatkannya?
user87142
@ user87142 Ketikkan saja echo $PATHterminal.
John WH Smith
@ chaos, saya mendapatkan ini ... / usr / local / bin: / usr / bin: / bin: / usr / games
user87142
Dan hasil dari cat /etc/environment?
kekacauan

Jawaban:

59

Pertama-tama, kalimat yang benar-benar Anda minati adalah:

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

Kesalahan ini telah dilaporkan beberapa kali oleh pengguna Debian dan Ubuntu (Anda sebenarnya dapat Google mereka untuk informasi lebih lanjut). Sepertinya PATHvariabel tidak diatur dengan benar ketika pengguna mencoba menjalankan perintah sudo, yang mungkin adalah apa yang Anda coba lakukan.

Solusi 1: Tetapkan sudojalur aman default

Buka /etc/sudoersdengan menjalankan visudodi terminal Anda, dan pastikan file menyertakan baris berikut:

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

Informasi lebih lanjut tentang masalah ini dapat ditemukan di sini (Masalah dan kiat> PATH tidak disetel).

Solusi 2: gunakan akun root secara langsung

Jangan gunakan sudo, cukup beralih rootuntuk menjalankan perintah Anda. Jalankan salah satu dari perintah berikut untuk melakukannya:

$ sudo -i
$ su 

Setelah Anda login sebagai root, jalankan saja apt-getperintah Anda :

# apt-get ...

Anda mungkin harus mengatur root PATHterlebih dahulu. Edit /root/.bashrc(dengan hak root, tentu saja), dan tambahkan baris berikut:

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

Solusi 3: mencoba meneruskan PATHvariabel ke sudopada waktu eksekusi.

Awali sudopanggilan dengan redefinisi PATHvariabel:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin sudo apt-get ...
John WH Smith
sumber
1
Saya telah mencoba menggunakan pengguna root tetapi tidak berhasil. Saya telah memeriksa jalur juga.
user87142
@ user87142 Yah Anda tidak memeriksa dengan benar, karena /sbintidak ada. Coba atur lagi (solusi 1 dan / atau 3). Saya mengedit solusi 2 untuk memasukkan cara mengedit PATH root saat menggunakan akun secara interaktif.
John WH Smith
Saya telah memeriksa bahwa ...... Default env_reset Defaults secure_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
user87142
Apakah Anda menemukan solusi untuk itu?
Brijesh Valera
Variasi dari solusi ketiganya adalah yang export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/binpertama, kemudian sudo -E apt install nginxsetelah itu. The -Eberarti saklar --preserve-envsehingga mengekspor env Anda vars ke sudosesi.
Mark Hudson
2

entah kenapa aku punya masalah yang sama.

Harap baca pesan kesalahan Anda dengan cermat dan Anda akan menemukan solusinya. Ada catatan yang mengatakan:

Catatan: PATH root biasanya harus berisi / usr / local / sbin, / usr / sbin dan / sbin.

Kemudian saya memeriksa jalur saya dan entah bagaimana saya kehilangan / sbin di jalur saya.

echo $ PATH

kemudian saya menambahkan dan masalahnya hilang. :)

export PATH = "$ PATH: / sbin"

Tcharam!

Danilo Souza
sumber
Cukup yakin ini sudah dicakup oleh jawaban yang ada , meskipun
Jeff Schaller
1

Saya memiliki masalah ini hari ini, dan menyelesaikannya dengan mengomentari baris (menggunakan #)

Defaults    exempt_group=sudo

dari file / etc / sudoers saya menggunakan

# visudo

sebagai root

Perubahan ini akan menyebabkan sudo menggunakan variabel secure_path default yang ditetapkan dalam file yang sama.

Kabub
sumber
Ini menyelesaikannya untuk saya di Ubuntu 18.04.1
sw00