Làm cách nào để sử dụng zypper trong tập lệnh bash cho ai đó đến từ apt-get?


12

Tôi có một vài câu hỏi về việc chuyển từ apt-get sang zypper trong các tập lệnh bash.

Tương đương của điều này là gì?

sudo apt-get install curl --assume-yes

(trong đó curl có thể là bất kỳ gói nào)

Tôi tìm thấy Zypper Cheat Sheet - openSUSE . Rất đẹp! Nhưng tôi sẽ đánh giá cao tiếng nói của kinh nghiệm ở đây - cách sử dụng zypper đúng cách trong kịch bản mà tôi muốn tự động đồng ý với tất cả các lời nhắc và không bỏ qua những điều cần phản hồi là gì?

Với sự thiếu kinh nghiệm của tôi, tôi sẽ bị cám dỗ để sử dụng:

sudo zypper --non-interactive --no-gpg-checks --quiet install --auto-agree-with-licenses curl

Nhưng đó có thực sự là tương đương --assume-yes?

Điều gì về tương đương cho những điều này?

sudo apt-get autoremove -y
sudo apt-get autoclean -y

Điều này cho thấy không có một ...

Có một sự thay thế cho gdebi-core? Hay là gdebi không bao giờ cần thiết với "trình giải thỏa mãn mạnh mẽ" của zypper? Tôi sử dụng gdebi cho các tình huống tôi cần cài đặt gói trên phiên bản cũ hơn và tôi đã có tệp .deb (nhưng không phải tất cả các phụ thuộc).

Câu trả lời:


10

Nói chung, bạn nên sử dụng --non-interactivechế độ, trong phím tắt -n, khi chạy zypper không tương tác:

zypper -n install curl

Điều đó có vẻ khó hiểu cho một người đến từ apt-get install -y curl. Một số lệnh phụ zypper cũng hỗ trợ tùy chọn -y/ lệnh cụ thể --no-confirmdưới dạng bí danh cho -n/ --non-interactive, nhưng không phải tất cả các lệnh phụ đều làm. Khi installlệnh thực hiện điều đó, lệnh này tương đương với ở trên:

zypper install -y curl

Lưu ý rằng -yphải đến sau install , trong khi -ntùy chọn toàn cầu xuất hiện trước tiểu ban ( zypper install -ncó nghĩa là một cái gì đó khác nhau; đọc trang man cho điều đó).

[Chỉnh sửa] Phần bên dưới không còn chính xác, nhưng được giữ lại để tham khảo lịch sử. Zypper hiện tại hỗ trợ --gpg-auto-import-keystùy chọn tự động nhập và tin tưởng các khóa gpg được liên kết với kho lưu trữ mới.


Theo tài liệu , không có cách nào để chấp nhận khóa GPG mà không có chế độ tương tác:

một khóa mới chỉ có thể được tin cậy hoặc nhập trong chế độ tương tác

Ngay cả với --no-gpgp-checkskhóa GPG sẽ bị từ chối.

Một cách giải quyết cho các tập lệnh là sử dụng ống dẫn và echo:

zypper addrepo http://repo.example.org my_name | echo 'a'

1
Nghiêm túc? Có một  -ntùy chọn và một  -ytùy chọn và chúng có nghĩa là cùng một thứ nhưng chúng phải được đặt ở các vị trí khác nhau trong dòng lệnh? Vâng, đó là khó hiểu. (Để được rõ ràng: Tôi không chụp sứ giả; Tôi nói rằng các nhà phát triển nên có suy nghĩ thêm về vấn đề khả năng sử dụng.)
G-Man Says 'Khôi phục Monica'

@ G-Man - tốt, loại. :) zyppercó một -nlựa chọn. Các installlệnh phụ có cả một -ytùy chọn mà là một sự tiện lợi mà bí danh cho toàn cầu -nlựa chọn, và cũng có riêng của mình -nđó là viết tắt của --name. Có thể cài đặt các gói theo khả năng. Vì vậy, zypper install -n blahchỉ định chỉ giải quyết gói có tên blahvà không xem xét các gói cung cấp blah . Không có điều đó, zypper có thể giải quyết dựa trên phần cung cấp từ RPM (bao gồm so sánh phiên bản), điều này có thể giúp giải quyết phụ thuộc dễ dàng hơn. zypper install 'python>3.5'ví dụ.
dannysauer

Việc sử dụng chính zypper install -nlà nếu có thể bạn muốn cài đặt một gói cụ thể có tên là khả năng do người khác cung cấp. Ví dụ: có thể có một vài triển khai vi và bạn chỉ muốn một gói cụ thể có tên vi mà không có độ phân giải rơi trở lại gvim (cung cấp vi) trong trường hợp vigói cụ thể bị thiếu trong một số lý do trong repo của bạn. Cá nhân, tôi không thích bản chất khó hiểu của các tùy chọn ngắn và hiếm khi sử dụng chúng trong các tập lệnh hoặc bất cứ điều gì khác mà ai đó (như tôi) có thể cần đọc sau này. : D
dannysauer

8

Bạn có tùy chọn tương tác --non. Từ trang người đàn ông:

Switches  to  non-interactive  mode. 
In this mode zypper doesn't ask user to type answers to various prompts, but uses default answers automatically. 
The  behaviour of this option is somewhat different than that of options like '--yes', since zypper can answer different answers to different questions. 
The answers  also  depend on other options like '--no-gpg-checks'.

Không có sự tương ứng thực sự với autoremove của apt-get. Gần nhất là --clean-depstùy chọn của removelệnh, giúp loại bỏ các phụ thuộc ngay lập tức (nhưng không phải sau đó).


có thể thêm tùy chọn như vậy zypper.confđể xác nhận vĩnh viễn như trong các trình quản lý gói khác không?

Tôi không biết. Tôi đã không sử dụng suse trong một thời gian, vì vậy tôi không thể kiểm tra nó.
chiếu

có vẻ như không thể đối với zypper không giống như pacman, apt và yum / dnf :-(

3

Đó là một mẫu

zypper --non-interactive --quiet addrepo --refresh -p 90 http://packman.inode.at/suse/openSUSE_Leap_15.0/ 'packman'
zypper --gpg-auto-import-keys refresh
zypper --non-interactive dist-upgrade --allow-vendor-change --from packman
zypper --non-interactive install vlc vlc-codecs

Tất nhiên bạn có thể bao gồm nhiều tùy chọn hơn --auto-agree-with-licensesnhưng hãy nhớ rằng điều đó tạo ra sự khác biệt nếu trước hoặc sauinstall


2

Điều này làm việc cho tôi (đã kiểm tra trên SLES12SP3):

zypper --non-interactive --quiet ar -C http://myrepo myrepo
zypper --gpg-auto-import-keys ref

Lưu ý -C/--no-checkcho zypper ar.

Bây giờ bạn có thể cài đặt các gói:

zypper in -y --auto-agree-with-licenses vim
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.