Bagaimana cara menggunakan zypper dalam skrip bash untuk seseorang yang datang dari apt-get?

12

Saya punya beberapa pertanyaan tentang pindah dari apt-get ke zypper dalam skrip bash.

Apa yang setara dengan ini?

sudo apt-get install curl --assume-yes

(di mana curl bisa menjadi paket apa saja)

Saya menemukan Lembar Curang Zypper - openSUSE . Sangat bagus! Tapi saya akan menghargai suara pengalaman di sini - apa cara yang tepat untuk menggunakan zypper dalam sebuah skrip di mana saya ingin secara otomatis menyetujui semua petunjuk dan tidak melewatkan hal-hal yang memerlukan tanggapan?

Dengan kurang pengalaman, saya akan tergoda untuk menggunakan:

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

Tetapi apakah itu benar-benar setara --assume-yes?

Bagaimana dengan yang setara untuk ini?

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

Ini menunjukkan tidak ada ...

Apakah ada pengganti untuk gdebi-core? Atau gdebi tidak pernah dibutuhkan dengan "pemecah kepuasan yang kuat" dari zypper? Saya menggunakan gdebi untuk situasi di mana saya perlu menginstal paket pada versi yang lebih lama dan saya sudah memiliki file .deb (tetapi tidak semua dependensi).

MountainX
sumber

Jawaban:

10

Secara umum, Anda harus menggunakan --non-interactivemode, dalam pintasan -n, saat menjalankan zypper secara non-interaktif:

zypper -n install curl

Itu mungkin tampak membingungkan bagi seseorang yang datang apt-get install -y curl. Beberapa sub-perintah zypper juga mendukung perintah -y/ --no-confirmopsi khusus sebagai alias untuk -n/ --non-interactive, tetapi tidak semua sub-perintah melakukannya. Ketika installperintah mengimplementasikannya, perintah ini setara dengan yang di atas:

zypper install -y curl

Perhatikan bahwa -yharus datang setelah install , sedangkan -nopsi global datang sebelum subperintah ( zypper install -nberarti sesuatu yang berbeda; baca halaman manual untuk itu).

[Sunting] Bagian di bawah ini tidak lagi akurat, tetapi dipertahankan untuk referensi sejarah. Zypper saat ini mendukung --gpg-auto-import-keysopsi untuk secara otomatis mengimpor dan mempercayai kunci gpg yang terkait dengan repositori baru.


Menurut dokumentasi tidak ada cara bagaimana menerima kunci GPG tanpa mode interaktif:

kunci baru dapat dipercaya atau diimpor dalam mode interaktif saja

Bahkan dengan --no-gpgp-checkskunci GPG akan ditolak.

Solusi untuk skrip adalah dengan menggunakan pipa dan echo:

zypper addrepo http://repo.example.org my_name | echo 'a'
Tombart
sumber
1
Serius? Ada  -nopsi dan  -yopsi dan artinya sama tetapi harus ditempatkan pada posisi berbeda di baris perintah? Ya, itu membingungkan. (Untuk lebih jelasnya: Saya tidak menembak pengirim pesan; Saya mengatakan bahwa pengembang seharusnya lebih memikirkan masalah kegunaan.)
G-Man Mengatakan 'Reinstate Monica'
@ G-Man - yah, semacam. :) zypperpunya -nopsi. The installsub perintah memiliki kedua -ypilihan yang merupakan kenyamanan yang alias ke global -npilihan, dan juga memiliki sendiri -nyang merupakan kependekan --name. Mungkin untuk menginstal paket berdasarkan kemampuan. Jadi, zypper install -n blahtentukan untuk hanya menyelesaikan paket yang dinamai blahdan tidak mempertimbangkan paket yang menyediakan blah . Tanpa itu, zypper dapat menyelesaikan berdasarkan bagian menyediakan dari RPM (termasuk perbandingan versi), yang dapat membuat resolusi ketergantungan lebih mudah. zypper install 'python>3.5'sebagai contoh.
dannysauer
Penggunaan utama untuk zypper install -nadalah jika mungkin Anda ingin menginstal paket tertentu yang namanya adalah kemampuan yang disediakan oleh orang lain. Sebagai contoh, mungkin ada beberapa implementasi vi, dan Anda hanya ingin paket tertentu bernama vi tanpa resolusi kembali ke gvim (yang menyediakan vi) jika vipaket tertentu karena suatu alasan hilang dalam repo Anda. Secara pribadi, saya tidak suka sifat membingungkan dari opsi pendek dan jarang menggunakannya dalam skrip atau apa pun yang mungkin perlu dibaca seseorang (seperti saya). : D
dannysauer
8

Anda memiliki opsi --non-interaktif. Dari halaman manual:

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'.

Tidak ada korespondensi nyata dengan autoremove apt-get. Yang paling dekat adalah --clean-depsopsi dari removeperintah, yang membersihkan dependensi segera (tetapi tidak sesudahnya).

tikar
sumber
apakah mungkin untuk menambahkan opsi seperti itu zypper.confuntuk konfirmasi permanen seperti pada manajer paket lainnya?
Saya tidak tahu Saya belum pernah menggunakan suse untuk sementara, jadi saya tidak bisa memeriksanya.
mat
sepertinya tidak mungkin untuk zypper tidak seperti pacman, apt, dan yum / dnf :-(
3

Itu adalah sampel

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

Tentu saja Anda dapat memasukkan lebih banyak opsi seperti --auto-agree-with-licensestetapi ingat bahwa itu membuat perbedaan jika sebelum atau sesudahnyainstall

Marcelo Atie
sumber
2

Ini bekerja untuk saya (diperiksa pada SLES12SP3):

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

Catatan -C/--no-checkuntuk zypper ar.

Sekarang Anda dapat menginstal paket:

zypper in -y --auto-agree-with-licenses vim
amaslenn
sumber