Làm cách nào để cài đặt một gói với apt mà không có phần mềm Bạn có muốn tiếp tục [Y / n] không?


55

Tất nhiên khi bạn gõ:

sudo apt-get install whatever

Nó hỏi bạn:

Do you want to continue [Y/n]? 

Có cách nào tôi có thể chỉ cần cài đặt nó mà không cần hỏi tôi có muốn tiếp tục không? Tôi không thực sự quan tâm đến không gian, tôi có nhiều hơn thế rồi.


Câu trả lời:


89
sudo apt-get install -y whatever

Từ trang người đàn ông ( man apt-get):

 -y, --yes, --assume-yes

           Automatic yes to prompts; assume "yes" as answer to all prompts and
           run non-interactively. If an undesirable situation, such as
           changing a held package, trying to install a unauthenticated
           package or removing an essential package occurs then apt-get will
           abort. Configuration Item: APT::Get::Assume-Yes.

9
(làm thế nào để sống tập tin nguy hiểm)
user2413

Cảm ơn rât nhiều! Tôi thực sự nên sử dụng trang người đàn ông đó thường xuyên hơn. :)
Luca

2
Đó là lý do tại sao họ ở đó @KingShimkus;)
Rinzwind

5
sudo apt-get install -yeah bất cứ điều gì ...
BoJack Horseman

Bây giờ nếu chỉ điều này hoạt động để nâng cấp gói Docker>. <Nếu bạn chưa bao giờ nâng cấp Docker trước đây, thì đây là hình ảnh của những gì bật lên trong thiết bị đầu cuối ngay cả khi bạn sử dụng --yes: Imgur Thật khó chịu vì điều đó buộc phải tương tác trong quá trình cập nhật gói .
Spencer D

15

Đối với apt-get, -yhoặc --assume-yeshoạt động tốt (như @rinzwind đã giải thích) và tôi cho rằng đó là câu trả lời tốt nhất ở đây. Đối với nhiều hoạt động hành chính tương tác như vậy, có một lệnh tương tự.

Một cách khá chung chung khác để làm điều này là một cái gì đó như:

 $ echo "y" | sudo apt-get install edamame_biscuit

(Trong đó edamame-bisc là gói (trang điểm) bạn muốn cài đặt và "y" được coi là một phản hồi hợp pháp; thay thế bằng "có" hoặc văn bản khác nếu cần.)

Một 'tính năng' của phương pháp này là điều này sẽ bị hỏng nếu bạn không chính xác giả sử chỉ có một dấu nhắc tương tác. Nếu có một số lời nhắc không mong muốn tiềm tàng hơn mà bạn có thể không muốn nói đồng ý, bạn sẽ tránh được tình trạng hệ thống bị trục trặc mà không cần hỏi.


13
Ngoài ra, yes | sudo apt-get install edamame-biscuit. Có là một lệnh spam từ "có" đến đầu ra của nó. Bạn cũng có thể làm cho nó xuất ra bất kỳ văn bản nào khác khi cần, xem manpage.
Kroltan

14
@Kroltan yesLệnh (theo mặc định) chỉ xuất ra chữ cái ytheo sau là một dòng mới nhiều lần cần thiết để điền vào bộ đệm ống. Để thực sự in từ yes, bạn phải sử dụng lệnh yes yes.
Jonathan Callen

3
yes, xin lỗi, lỗi của tôi
Kroltan

4
@Braiam Tôi nghĩ đó là vấn đề, vì vậy nó sẽ không làm gì nếu ai đó chỉ dán cái này vào vỏ của anh ấy / cô ấy.
Kroltan

2
Tôi đặc biệt thích phần "A 'tính năng" của phương pháp này là nó sẽ bị hỏng nếu bạn không chính xác giả sử chỉ có một dấu nhắc tương tác. " như spam có cho mọi thứ có thể nguy hiểm hơn.
BeowulfNode42

4

Trước hết, hãy hiểu tại sao tin nhắn xuất hiện. Trong thực tế, nếu gói không có phụ thuộc mà bạn chưa cài đặt hoặc bạn đã nói rõ ràng để cài đặt, apt không bao giờ hỏi bạn:

➜  ~  sudo apt-get -qq install xfce4-screenshooter
Selecting previously unselected package xfce4-screenshooter.
(Reading database ... 296146 files and directories currently installed.)
Preparing to unpack .../xfce4-screenshooter_1.8.1-2_amd64.deb ...
Unpacking xfce4-screenshooter (1.8.1-2) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for mime-support (3.56) ...
Setting up xfce4-screenshooter (1.8.1-2) ...

Trong khi nếu bạn muốn cài đặt một gói phụ thuộc vào các gói bạn không đề cập thì sẽ hỏi:

➜  ~  sudo apt-get -q install avis
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libjzlib-java libmina-java libslf4j-java
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Need to get 720 kB of archives.
After this operation, 1,258 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Mà thậm chí, sẽ không hỏi nếu bạn cũng ngầm nói rằng bạn muốn cài đặt các gói đó:

➜  ~  apt-get -q install avis libjzlib-java libmina-java libslf4j-java
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Inst libjzlib-java (1.1.3-1 Debian:testing [all])
Inst libslf4j-java (1.7.7-1 Debian:testing [all])
Inst libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Inst avis (1.2.2-2 Debian:testing [all])
Conf libjzlib-java (1.1.3-1 Debian:testing [all])
Conf libslf4j-java (1.7.7-1 Debian:testing [all])
Conf libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Conf avis (1.2.2-2 Debian:testing [all])

Nhưng, sau đó, làm thế nào để làm cho nó không yêu cầu bạn dứt khoát? Thông qua câu trả lời của Rizwind sẽ bao gồm các giải pháp đặc biệt và kịch bản (trên thực tế, tùy chọn đó được sử dụng nhiều hơn trong các tập lệnh), thay vào đó bạn có thể sửa đổi apt.conftệp của mình và thêm:

APT::Get::Assume-Yes

Một cái gì đó như thế này là đủ:

echo 'APT::Get::Assume-Yes;' | sudo tee -a /etc/apt/apt.conf.d/00Do-not-ask

Lưu ý, điều này sẽ không cho phép các lời nhắc khác nghiêm trọng hơn mà bạn nên xác minh , như:

➜  ~  sudo apt-get install sonar
WARNING: The following packages cannot be authenticated!
  sonar
Install these packages without verification? [y/N] 

Đó là lý do tại sao tôi không khuyến nghị sử dụng yes | ..., vì cảnh báo này sẽ bị bỏ qua.


Đối với "CẢNH BÁO: Các gói sau không thể được xác thực!", Bạn nên làm gì với nó? Tôi nhận được điều này cho một hình ảnh Docker ( python:3.6-slim). Tôi có nên hỏi một câu hỏi riêng cho điều đó?
Martin Thoma

@MartinThoma thường, đó là một vấn đề với danh sách gói không được cập nhật. Chạy apt-get update trước khi cài đặt. Nếu điều đó không xóa tin nhắn, hãy đặt câu hỏi với càng nhiều chi tiết bạn có thể, cho đến cách bạn tạo hình ảnh docker.
Braiam

0

Thêm -yvào bất kỳ cài đặt thư viện

ví dụ như :sudo apt-get install -y nodejs

ví dụ như :sudo apt-get install -y postgres

ví dụ như :sudo apt-get install -y mongodb




--force-yes as well, và cẩn thận của không gian tình cờ. khấu hao cho các bản phát hành gần đây

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.