Как использовать zypper в скриптах bash для тех, кто работает с apt-get?


12

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

Что является эквивалентом этого?

sudo apt-get install curl --assume-yes

(где может быть любой пакет curl)

Я нашел шпаргалку Zypper - openSUSE . Очень хорошо! Но я был бы признателен за этот опыт - как правильно использовать zypper в сценарии, где я хочу автоматически соглашаться со всеми приглашениями, а не пропускать вещи, требующие ответа?

С моей неопытностью я хотел бы использовать:

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

Это говорит о том, что нет ни одного ...

Есть ли замена для gdebi-core? Или gdebi никогда не требуется с «мощным решателем удовлетворенности» Зиппера? Я использую gdebi для ситуаций, когда мне нужно установить пакет на более старую версию, и у меня уже есть файл .deb (но не все зависимости).

Ответы:


10

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

zypper -n install curl

Это может показаться странным для кого-то из apt-get install -y curl. Некоторые подкоманды zypper также поддерживают специфичную для команды -y/ --no-confirmопцию как псевдоним для -n/ --non-interactive, но не все подкоманды поддерживают . Поскольку installкоманда реализует это, эта команда эквивалентна приведенной выше:

zypper install -y curl

Обратите внимание, что -yдолжен идти после install , в то время как глобальный -nпараметр стоит перед подкомандой ( zypper install -nчто-то другое; для этого прочитайте страницу руководства).

[Редактировать] Раздел ниже не является точным, но сохраняется для исторической справки. Текущий zypper поддерживает --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 . Без этого zypper может разрешать на основе раздела обеспечить из RPM (включая сравнение версий), что может упростить разрешение зависимостей. zypper install 'python>3.5'например.
dannysauer

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

8

У вас есть опция --non-interactive. Со страницы руководства:

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, поэтому не могу его проверить.
коврик

zypper кажется невозможным в отличие от 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.