Apt-get cài đặt nhiều gói mà không dừng lại


25

Tôi đang tạo một tập lệnh bash để cài đặt các gói khác nhau bằng cách sử dụng cài đặt apt-get. Tuy nhiên, tôi nhận thấy rằng nếu có một dòng ghi:

sudo apt-get install package1 package2 package3

và một trong các gói không được tìm thấy, không có gói nào khác sẽ được cài đặt. Làm thế nào để tôi làm cho nó tiếp tục ngay cả khi nó không thể tìm thấy một trong các gói?

Cảm ơn trước.

Câu trả lời:


18

Tôi đề nghị một apt-getlựa chọn

sudo apt-get --ignore-missing install $list_of_packages

nhưng lưu ý rằng sự phụ thuộc bị thiếu có thể bị bỏ qua và ngay cả khi bạn sử dụng, --forcebạn có thể bị hỏng hệ thống.


1
Lưu ý rằng --ignore-missingchỉ có cách giải quyết cho một vấn đề trong tải xuống. Xem superuser.com/a/844627/106974
IsaacS

3
Điều này thực sự không hoạt động.
leoheck

9
for i in package1 package2 package3; do
  sudo apt-get install $i
done

5
Một chút hiệu năng tàn bạo khôn ngoan (cây phụ thuộc gói đang được xây dựng từ đầu cho mỗi lần lặp), nhưng sẽ hoạt động tốt.
Serge Broslavsky

Như @blueskin đã ám chỉ, sử dụng -ytùy chọn sẽ tốt nếu bạn không muốn tương tác với nó, đặc biệt là khi cài đặt một danh sách lớn các gói.
pd12

0

Cài đặt mỗi gói dưới dạng một lệnh riêng biệt thay vì trong một lệnh đơn, theo cách này nếu không cài đặt được do không tìm thấy hoặc một số lỗi khác thì nó sẽ không ngăn những người khác cài đặt. Mà bạn có thể sử dụng vòng lặp 'cho' như dưới đây. Ngoài ra, hãy nhớ sử dụng -ycờ nếu cài đặt nhiều gói, để tránh tình trạng gõ phím yescho từng gói.

INSTALL_PKGS="pk1 pk2 pk3 pk4 pk5 ... and so ... on ..pk_gogol"
for i in $INSTALL_PKGS; do
  sudo apt-get install -y $i
done

@Fabby Tôi đã chỉnh sửa văn bản để làm cho nó rõ ràng cho sự hài lòng của bạn
blueskin

1
Điều đó trông giống như một chỉnh sửa cho câu trả lời hiện có ở đây hơn là một câu trả lời mới. ¯ \ _ () _ / Xin lỗi! -1 ...
Fabby
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.