Tự động trả lời 'Có' khi sử dụng cài đặt apt-get


356

Có cách nào để apt-get installtrả lời "có" cho "Bạn có muốn tiếp tục [y / N] không?"?

Câu trả lời:


431

thông qua trang apt-get man :

apt-get -y install [packagename]

Đây có giống như câu trả lời @bclermont (--yes --force-yes) không?
jjxtra

175

Vấn đề với:

apt-get --yes install $something

là nó sẽ yêu cầu xác nhận thủ công nếu khóa công khai của chữ ký gói không nằm trong khóa, hoặc một số điều kiện khác. để chắc chắn rằng nó không yêu cầu xác nhận chỉ cần làm điều này:

apt-get --yes --force-yes install $something

Nếu bạn muốn có các cài đặt này vĩnh viễn, hãy tạo một tệp trong /etc/apt/apt.conf.d/, như /etc/apt/apt.conf.d/90forceyes với nội dung sau:

APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";

3
+1 cho sự đa dạng. Tất cả -yđã trở nên nhàm chán. (Thêm vào đó là một câu trả lời đầy đủ hơn.)
Dennis Williamson

1
Điều này có hoạt động không khi nó nói "Để tiếp tục gõ cụm từ 'Có, làm như tôi nói!'"? Nếu không thì công việc là gì? Tôi gặp phải điều này khi cố gắng thay thế sysvinit bằng systemd trong hình ảnh debian chroot của tôi.
Lennart Rolland

13
Vui lòng không bao giờ sử dụng --force-yes: vì phản hồi này cho một chủ đề liên quan trêndebian-devel gợi ý, --force-yescó thể khiến hệ thống không sử dụng được. (Tôi không downvoting bởi vì câu trả lời thực sự giải quyết vấn đề như đã nêu bởi OP, nhưng tôi muốn thêm một CẢNH BÁO RED BIG câu trả lời nào.)
kostix

7
APT :: Get :: Giả sử-Có "đúng"; đã giúp tôi tránh bị gián đoạn trong quá trình cài đặt trong thùng chứa docker.
Mehdi Sadeghi

3
lực lượng-có đã bị phản đối. tracker.mender.io/browse/CFE-2360
rrawat

53

Lưu ý rằng nếu bạn cũng muốn tự động đi theo câu trả lời mặc định khi lời nhắc tương tác xuất hiện, bạn có thể sử dụng DEBIAN_FRONTEND=noninteractive

Cài đặt đơn:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install [packagename]

Ví dụ:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

Tất cả các cập nhật:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

Bạn có thể thiết lập các tùy chọn tốt hơn với -o Dpkg::Options::="--force-confdef"-o Dpkg::Options::="--force-confold".

Ví dụ:

apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"

hoặc là

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

Ví dụ về dấu nhắc tương tác:

nhập mô tả hình ảnh ở đây

Đọc thú vị: Thực hiện cài đặt không giám sát gói Debian


1
Câu trả lời chính xác. Ngay cả với -y, tôi vẫn nhận được lời nhắc hỏi liệu tôi có muốn khởi động lại dịch vụ không. Tôi cần điều này để loại bỏ hoàn toàn tất cả các lời nhắc.
wvducky

14
APT::Get::Assume-Yes "true";

APT::Get::force-yes "true";

Điều này ít nhất nên được trong /etc/apt/apt.confvà nhận xét ra. Tôi lo lắng Ubuntu đang cố gắng để Microsoft luôn luôn xin phép.

"Bạn có chắc không?", Tất nhiên tôi chắc chắn, tôi không phải là một con khỉ được đào tạo chỉ đơn giản là gõ bàn phím, nhấp vào hạnh phúc.

Tiếp theo cánh cửa sẽ hỏi, "Bạn có chắc chắn muốn đi ra ngoài?"
Lò nướng sẽ hỏi, "Bạn có chắc bạn muốn nấu ăn?"
Ô tô sẽ hỏi, "Bạn có chắc chắn muốn áp dụng phanh?"
Bình chữa cháy sẽ hỏi: "Bạn có chắc chắn muốn dập lửa không?"
Tôi xin lỗi Dave, tôi không thể để bạn làm điều đó.
HAL9000 có thể sử dụng một cơn co nhưng Dữ liệu không thể hoặc không thể.


3
Sự khác biệt với HAL9000 và dpkg xin phép là HAL đã nói "không, thời gian", trong khi điều "Có, làm như tôi nói" chỉ xuất hiện nếu bạn sắp phá vỡ hoàn toàn và hoàn toàn hệ thống của bạn. Nếu đó là những gì bạn muốn, chắc chắn, hãy tiếp tục. Nhưng có một cảnh báo trong trường hợp đó có vẻ hợp lý.
Wouter Verhelst


7
apt-get -y update
apt-get -y install [package]

2
+1, nhưng tại sao updatecần sự cho phép?
amyassin

@amyassin apt-get updatelệnh yêu cầu quyền root vì nó cập nhật danh sách gói (chỉ mục) cục bộ, là các tệp hệ thống do root sở hữu.
jjmontes

3

Nói chung các tùy chọn từ hướng dẫn sẽ hoạt động tốt

apt-get -y --force-yes install package

Nếu nó không thành công, bạn có thể thử sử dụng yeslệnh.

yes | apt-get -y --force-yes install package

đã sử dụng điều này với kịch bản cung cấp vỏ mơ hồ của tôi

PS: trong trường hợp bạn muốn không tương tác nhưng nói chung là không có thì bạn có thể thử điều này:

yes no | apt-get install package


1

Nếu bạn luôn muốn đối số -y tôi khuyên bạn nên thêm dòng

alias apt-get='apt-get -y' #Automatic -y argument on apt-get commands

vào .bashrc của bạn. Điều này, như nhận xét giải thích, sẽ tự động thêm đối số -y vào tất cả các lệnh apt-get của bạn và do đó phê duyệt tất cả các bản tải xuống.


LƯU Ý: Điều này sẽ vẫn đúng cho đến khi bạn hoàn nguyên .bashrc và khởi động lại trình bao.


1

Tôi đang tìm cách chọn một tập lệnh không mặc định trong tập lệnh, cụ thể là khi cài đặt wireshark và cuối cùng sử dụng tmux để tương tác với trình bao, như sau:

# Start a detached root session
sudo tmux new-session -d
# Send the command
sudo tmux send-keys "DEBIAN_FRONTEND=readline apt-get -qq install wireshark-common; exit" enter
# Wait for the tmux session to get to the interactive stage
sleep 5
# Answer the question
sudo tmux send-keys "yes" enter
# Now attach to the session so we wait for command completion
sudo tmux attach
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.