Як використовувати zipper у bash-скриптах для тих, хто походить з apt-get?


12

У мене є кілька питань щодо переходу від apt-get до zypper в bash-скриптах.

Що таке еквівалент?

sudo apt-get install curl --assume-yes

(де curl може бути будь-який пакет)

Я знайшов шпаргалку Zipper - openSUSE . Дуже хороший! Але я би вдячний голосом досвіду тут - який правильний спосіб використовувати zipper в сценарії, де я хочу автоматично погодитися на всі підказки, а не пропускати речі, які потребують відповіді?

Маючи свій досвід, я б спокусився використати:

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

Але це справді еквівалент --assume-yes?

А як щодо їх еквівалента?

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

Це говорить про те, що немає жодного ...

Чи є заміна дляbibi-core? Або коли-небудь не потрібні коли-небудь із "потужним вирішувачем задоволення" із зашипкою? Я використовую gdebi для ситуацій, коли мені потрібно встановити пакет на більш старій версії, і у мене вже є файл .deb (але не для всіх залежностей).

Відповіді:


10

Взагалі, вам слід користуватися --non-interactiveрежимом у ярлику -n, коли запускається блискавка неінтерактивно:

zypper -n install curl

Це може здатися заплутаним для когось, хто походить apt-get install -y curl. Деякі підкоманди zipper також підтримують специфічний для команди -y/ --no-confirmпараметр як псевдонім для -n/ --non-interactive, але не всі підкоманди. Оскільки installкоманда реалізує це, ця команда еквівалентна наведеному:

zypper install -y curl

Зауважте, що це -yповинно відбуватися після того install , як глобальний -nваріант виходить перед підкомандою ( zypper install -nозначає щось інше; прочитайте сторінку man для цього).

[Редагувати] Розділ нижче вже не є точним, але зберігається для історичного ознайомлення. Поточна зимовка підтримує --gpg-auto-import-keysможливість автоматичного імпорту та довіри ключів gpg, пов’язаних із новим сховищем.


Згідно з документацією , немає способу прийняти ключ GPG без інтерактивного режиму:

новий ключ можна довіряти або імпортувати лише в інтерактивному режимі

Навіть за --no-gpgp-checksдопомогою ключа GPG буде відхилено.

Вирішенням сценаріїв є використання pipe та echo:

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

1
Серйозно? Є  -nваріант і  -yваріант, і вони означають одне і те ж, але вони повинні бути розміщені на різних позиціях в командному рядку? Так, це заплутано. (Щоб було зрозуміло: я не знімаю месенджера; я кажу, що розробник мав би більше подумати над питаннями юзабіліті.)
G-Man каже: "Відновити Моніку"

@ G-Man - ну, начебто. :) zypperє -nваріант. Команда installsub має як -yваріант, що є зручністю, що псевдонімом до глобального -nваріанту, так і має свій власний, -nякий короткий --name. Можна встановити пакети за можливістю. Отже, zypper install -n blahвказує, щоб вирішувати лише названий пакет, blahа не враховувати пакети, які надаються blah . Без цього zipper може вирішуватись на основі розділу, наданого з RPM (включаючи порівняння версій), що може полегшити дозвіл залежності. zypper install 'python>3.5'наприклад.
dannysauer

Основне використання zypper install -n- якщо, можливо, ви хочете встановити певний пакет, ім'я якого є можливостями, наданими іншими. Наприклад, можливо, є кілька реалізацій vi, і ви хочете лише, щоб певний пакет з назвою vi без роздільної здатності перейшов до gvim (який надає vi) у випадку, якщо певний viпакет чомусь відсутній у вашій репо. Особисто мені не подобається заплутаний характер коротких варіантів і рідко використовую їх у сценаріях чи в чому-небудь іншому, як-от я, можливо, потрібно прочитати пізніше. : D
dannysauer

8

У вас є - неінтерактивний варіант. На чоловіковій сторінці:

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

Немає справжнього кореспонденції щодо авторемонта apt-get. Найближчим є --clean-depsваріант removeкоманди, який очищує залежності відразу (але не після цього).


чи можна додати таку опцію zypper.confдля постійного підтвердження, як у інших менеджерів пакетів?

Не знаю. Я не використовував suse деякий час, тому не можу це перевірити.
мат

здається, що це неможливо для блискавки на відміну від pacman, apt та yum / dnf :-(

3

Це зразок

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

Звичайно, ви можете включити більше варіантів на кшталт, --auto-agree-with-licensesале пам’ятайте, що має значення, якщо це до або післяinstall


2

Це працювало для мене (перевірено на SLES12SP3):

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

Примітка -C/--no-checkдля zypper ar.

Тепер ви можете встановити пакети:

zypper in -y --auto-agree-with-licenses vim
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.