Lựa chọn Pacman để giả sử có có ngay một câu hỏi?


51

Khi cài đặt phần mềm trong các hệ thống debian, chúng ta có thể đặt một cái gì đó như thế này:

sudo apt-get install -y chromium-browser

theo cách đó, quá trình cài đặt diễn ra tự động, yêu cầu xác nhận cài đặt [Y / n]. Tôi có thể làm tương tự với pacman không?

Câu trả lời:


77

Từ man pacman:

--noconfirm
Bỏ qua bất kỳ và tất cả các bản tin Bạn có chắc không? Đó không phải là một ý tưởng tốt để làm điều này trừ khi bạn muốn chạy pacman từ một kịch bản.

Lưu ý trình độ về việc sử dụng điều này một cách cẩn thận ...

Arch là một phiên bản phát hành, có nghĩa là thỉnh thoảng pacman phải quản lý một số nâng cấp khá phức tạp. Tại những thời điểm pacman sẽ nhắc bạn để xác nhận lựa chọn-không để ý bạn những nhắc nhở thường không phải là một vấn đề quan trọng, nhưng trong một số trường hợp, như với các động thái gần đây từ /libđể /usr/lib, thiếu sự chú ý sẽ gây ra vỡ lớn. Đây không phải là một thói quen bạn muốn tu luyện.


Tôi chưa bao giờ chạy pacman với "--noconfirm" trong khoảng 3 năm sử dụng Arch, vì cảnh báo đó. Có bao nhiêu người chạy pacman từ một kịch bản? Những rủi ro lớn là gì? Tôi đã phải can thiệp 3 hoặc 4 lần để sửa những thứ mà pacman đã từ chối nâng cấp.
Bruce Ediger

3
Tôi cho rằng, với văn hóa của Arch, rằng cảnh báo là có để ngăn chặn sự tự mãn và quan niệm sai lầm rằng tự động cập nhật pacman là một ý tưởng tốt. Rất nhiều sự đổ vỡ có thể được đưa xuống cho những người không đọc đầu ra của pacman; --noconfirmsẽ làm trầm trọng thêm rằng ...
jasonwryan

1
Tôi có một tập lệnh "cài đặt" sử dụng --noconfirm. Ý tưởng là có thể lấy một hệ thống với bản cài đặt sạch được cập nhật gần đây và làm cho nó "có thể sử dụng được" mà không cần bất kỳ sự tương tác của người dùng.
StrongBad

3
Trên thực tế, --noconfirmkhông giả định yes, thay vào đó nó giả sử câu trả lời mặc định, điều này khá thường xuyên no. Ví dụ: # pacman -Scc Cache directory: /var/cache/pacman/pkg/ :: Do you want to remove ALL files from cache? [y/N]Đối với trường hợp trên, yes|pacman -Sccgiả sửyes
Utgarda

1
Trên thực tế, pacman --noconfirmlà bắt buộc nếu bạn đang sử dụng bộ chứa Docker, nếu không, nó sẽ chỉ chờ một đầu vào, và do đó tắt container có lỗi.
Amin NAIRI

29

Mặc dù trang hướng dẫn về vấn đề này không rõ ràng lắm, nhưng --noconfirmcờ sẽ không giả sử "có" cho mỗi câu trả lời. Nó giả sử câu trả lời mặc định đôi khi có thể là "không".

--noconfirm
      Bỏ qua bất kỳ và tất cả các bản tin Bạn có chắc không? Đó không phải là một ý tưởng tốt
      để làm điều này trừ khi bạn muốn chạy pacman từ một kịch bản

Để giả sử "có", bạn có thể dẫn đầu ra của yeslệnh tới pacman.

yes | sudo pacman -S firefox

Sử dụng yes | LC_ALL=en_US.UTF-8 pacman [...]để tương thích với các hệ thống có ngôn ngữ không được đặt thành tiếng Anh. Nếu không, các [Y/n]câu hỏi trở thành [J/n], ví dụ.
ComFalet

3
Cũng hãy cẩn thận câu trả lời này thất bại nếu Pacman từng hỏi một câu hỏi mà không có ycâu trả lời, ví dụ Enter a selection (default=all).
ComFalet

@ComFalet, thay vì thay đổi các biến môi trường được truyền vào pacman, sẽ dễ dàng hơn và có thể an toàn hơn nếu chỉ thực hiện yes J | sudo pacman -S firefoxtrong trường hợp đó. yes Jsẽ gây ra yeslặp lại đầu ra a Jthay vì a y.
vẽ Chapin

"Và có lẽ an toàn hơn" Làm sao vậy? Việc ghi đè ở trên chỉ ảnh hưởng đến môi trường của quá trình (cây) sinh ra và kết thúc với nó. Hơn nữa, việc gọi ở trên là hoàn toàn giống nhau cho tất cả các địa phương.
kelvin

Ngoài ra, điều gì sẽ xảy ra nếu ai đó sao chép / dán một dòng lệnh như vậy nhưng có một ngôn ngữ trong đó một trong các tùy chọn có ý nghĩa ngược lại hoặc hoàn toàn khác? Ví dụ: J(hoặc Y) có nghĩa là "không" hoặc "tất cả".
kelvin
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.