dpkg không thể tìm thấy ldconfig / start-stop-daemon trong biến PATH


41

Tôi đã cố gắng cài đặt bsd-mailxtiện ích gói đã được cài đặt tuy nhiên tôi đang tự hỏi về lỗi.

Đây là lỗi tôi nhận được:

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)

Bạn có thể gửi đầu ra của echo $PATHxin vui lòng?
hỗn loạn

@ hỗn loạn, làm thế nào để có được điều đó?
dùng87142

@ user87142 Chỉ cần gõ echo $PATHvào một thiết bị đầu cuối.
John WH Smith

@ hỗn loạn, tôi nhận được điều này ... / usr / local / bin: / usr / bin: / bin: / usr / games
user87142

Và đầu ra của cat /etc/environment?
hỗn loạn

Câu trả lời:


59

Trước hết, các dòng bạn thực sự quan tâm là:

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

Những lỗi này đã được báo cáo nhiều lần bởi người dùng Debian và Ubuntu (thực tế bạn có thể Google chúng để biết thêm thông tin). Có vẻ như PATHbiến không được đặt chính xác khi người dùng cố gắng thực hiện lệnh thông qua sudo, đây có thể là điều bạn đang cố gắng thực hiện.

Giải pháp 1: Đặt sudođường dẫn bảo mật mặc định

Mở /etc/sudoersbằng cách chạy visudotrong thiết bị đầu cuối của bạn và đảm bảo tệp bao gồm dòng sau:

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

Thông tin thêm về vấn đề này có thể được tìm thấy ở đây (Vấn đề và mẹo> PATH không được đặt).

Giải pháp 2: sử dụng tài khoản root trực tiếp

Đừng sử dụng sudo, chỉ cần chuyển sang rootchạy lệnh của bạn. Chạy một trong các lệnh sau để làm như vậy:

$ sudo -i
$ su 

Khi bạn đã đăng nhập bằng root, chỉ cần chạy lại apt-getlệnh của bạn :

# apt-get ...

Bạn có thể phải đặt root PATHtrước. Chỉnh sửa /root/.bashrc(tất nhiên với quyền root) và thêm dòng sau:

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

Giải pháp 3: cố gắng truyền PATHbiến sudovào thời gian thực hiện.

Chỉ cần tiền tố sudocuộc gọi với định nghĩa lại của PATHbiến:

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

1
Tôi đã thử sử dụng root user nhưng không hoạt động. Tôi cũng đã kiểm tra đường dẫn.
dùng87142

@ user87142 Vâng, bạn đã không kiểm tra chính xác, vì /sbinbị thiếu. Hãy thử thiết lập lại (giải pháp 1 và / hoặc 3). Tôi đã chỉnh sửa giải pháp 2 để bao gồm cách chỉnh sửa PATH của root khi sử dụng tài khoản một cách tương tác.
John WH Smith

Tôi đã kiểm tra xem ...... Mặc định env_reset Mặc định safe_path = "/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin"
user87142

Bạn đã tìm thấy bất kỳ giải pháp của nó?
Brijesh Valera

Một biến thể của giải pháp thứ 3 của ông là export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/binđầu tiên, sau đó là sudo -E apt install nginxsau đó. Do đó, -Echuyển đổi có nghĩa là --preserve-envxuất các lọ env của bạn sang sudophiên.
Mark Hudson

2

bằng cách nào đó tôi đã có cùng một vấn đề.

Vui lòng đọc thông báo lỗi của bạn một cách cẩn thận và bạn sẽ tìm thấy giải pháp. Có một lưu ý rằng:

Lưu ý: PATH của root thường chứa / usr / local / sbin, / usr / sbin và / sbin.

Sau đó, tôi đã kiểm tra đường dẫn của mình và bằng cách nào đó tôi đã thiếu / sbin trong đường dẫn của mình.

tiếng vang $ PATH

sau đó tôi thêm vào và vấn đề đã biến mất :)

xuất PATH = "$ PATH: / sbin"

Sốt!


Khá chắc chắn điều này đã được bao phủ bởi một câu trả lời hiện tại , mặc dù
Jeff Schaller

1

Tôi đã gặp vấn đề này ngày hôm nay và giải quyết nó bằng cách bình luận dòng (sử dụng #)

Defaults    exempt_group=sudo

từ tập tin / etc / sudoers của tôi bằng cách sử dụng

# visudo

làm gốc

Thay đổi này sẽ khiến sudo sử dụng biến Secure_path mặc định được đặt trong cùng một tệp.


Điều này đã giải quyết nó cho tôi trên Ubuntu 18.04.1
sw00
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.