~Rami ₪ MANUALS
רמי
SUBJECT: Zypper: Расширенное руководство по командам (OpenSUSE и SUSE Linux Enterprise)
AUTHOR: Rami Rosenfeld
DATE: 29/04/23; upd. 01/05/23
TIME: 20.00
LANG: ru, en
LICENSE: GNU FDL 1.3
TAGS: gnu, gnome, software, opensource, linux, system, man, manual, bash, privacy, security, suse, opensuse, systemd, systemctl, apparmor, selinux, firewalld, yast, rpm, zypper
Zypper: Расширенное руководство по командам (OpenSUSE и SUSE Linux Enterprise)
INTRO
Как отлично знают друзья и знакомые, моя единственная любовь - Красная Шапочка. Но, увы, в то же самое время я успеваю изменять ей :) с замечательной немецкой девочкой Сюзи. И (исходя из появившегося опыта) хочу честно признать - система управления пакетами и репозиториями zypper (даже в сравнении с yum/dnf) вне всяких сомнений является лучшей в мире.
Итак, чтобы не забыть протестированные команды, набросал для себя подробное руководство. Хочу обратить также особое внимание, что в zypper широко используется система алиасов - сокращения сложных команд и их опций. И это сильно облегчает работу с ОС и прикладным ПО.
Примечание: На самом деле, правильнее писать: "openSUSE" (т.е. со строчной буквы).
NOTE
1. Справка Zypper
- Просмотр man-страниц и справки по командам
Варианты:
man zypper
zypper
zypper help install
zypper update --help
2. Управление репозиториями
- Показ доступных репозиториев
zypper repos
zypper lr
- Детализация информации о репозиториях
zypper repos -d
zypper lr -d
- Информация о приоритетах репозиториев
zypper repos -p
zypper lr -p
- Добавление репозитория
zypper addrepo <options> <URI> <alias>
zypper ar <options> <URI> <alias>
Примеры ("update" - произвольно задаваемое имя репозитория, т.е. его алиас):
zypper addrepo http://download.opensuse.org/update/15.4/ update
zypper ar http://download.opensuse.org/update/15.4/ update
- Создание локального репозитория
zypper addrepo ~/path/to/repo repo_name
Примеры:
zypper addrepo ~/repo-my MY-repo
zypper ar ~/repo-test TEST-repo
- Обновление репозиториев
zypper refresh
zypper ref
- Обновление указанного репозитория
zypper refresh repo_name
- Изменение репозиториев
Команда отключит репозиторий № 4 из списка имеющихся:
zypper modifyrepo --disable 4
zypper mr -d 4
Команда отключит кэширование rpm-файлов для всех репозиториев (локальных и удаленных):
zypper mr -Ka
Последние две команды вызовут справку по модификации репозиториев:
zypper modifyrepo --help
zypper mr --help
- Переименование репозиториев
zypper namerepo 4 new_repo_name
zypper nr 4 new_repo_name
- Удаление репозиториев
zypper removerepo repo_name
zypper rr repo_name
- Удаление только локальных репозиториев
zypper removerepo --local
zypper rr -l
- Удаление "удаленных" (т.е. расположенных в сети) репозиториев
zypper removerepo --remote
zypper rr -t
- Установка приоритетов репозиториев
zypper modifyrepo --priority 100 repo_name
zypper mr -p 100 repo_name
Проверка произведенных изменений:
zypper repos --priority
zypper lr -p
- Активация кэша rpm-файлов для репозиториев
zypper modifyrepo --keep-packages --all
zypper mr -ka
Примечание: Данная команда включит кэширование файлов для всех активных репозиториев (локальных и удаленных).
- Активация кэша rpm-файлов для отдельно указанного репозитория
zypper modifyrepo --keep-packages 6
zypper mr -ka repo_name
Примечание: Используйте алиас репозитория или его порядковый номер в списке имеющихся репозиториев.
- Активация кэша rpm-файлов для удаленного (сетевого) репозитория
zypper mr --keep-packages --remote
zypper mr -kt
- Активация кэширования rpm-файлов с одновременным автоматическим обновлением всех удаленных (сетевых) репозиториев
zypper modifyrepo --keep-packages --remote --refresh
zypper mr --keep-packages --remote --refresh
zypper mr -ktf
- Удаление метадаты репозитория и его кэша
zypper clean --all repo_name
- Импорт и экспорт репозиториев
Экспорт:
zypper --export /backups/repos/file_name.repo
zypper lr --export /backups/repos/file_name.repo
Импорт:
zypper addrepo /backups/repos/file_name.repo
zypper ar /backups/repos/file_name.repo
3. Работа с пакетами, исходными кодами и зависимостями
- Поиск пакета
zypper search package_name
zypper se package_name
- Поиск пакета среди установленных в ОС
zypper search --installed-only package_name
zypper se -i package_name
Справку по поиску:
zypper se --help
- Просмотр информации о пакете
zypper info package_name
zypper if package_name
- Просмотр информации о пакете с частичным вводом его имени
zypper info --match-substrings packag
zypper if -s packag
Примечание: Под "packag" подразумевается неполное имя пакета "package_name"
- Установка пакета из репозитория
zypper install package_name
zypper in package_name_1 package_name_2
Примечание: Инсталлируемые пакеты будут скачаны из репозиториев и сохранены по адресу:
/var/cache/zypper/source-download
- Установка локально сохраненного пакета
zypper install ~/path/to/file/package_name.rpm
zypper in ~/path/to/file/package_name.rpm
- Скачивание пакета из репозитория (без последующих действий)
zypper download package_name.rpm
Пакет будет скачан из репозитория и сохранен по адресу:
/var/cache/zypp/packages/<repo>/<arch>/
- Установка пакета по специфичной версии
zypper install 'package_name<8.3'
zypper in 'package_name<8.3'
- Установка конкретной версии пакета
zypper install package_name-8.3.4
zypper in package_name-8.3.4
- Установка пакета по специфичной архитектуре
zypper install package_name.i386
zypper in package_name.i386
- Установка специфичной версии и архитектуры пакета
zypper install 'package_name.i386<8.3'
zypper in 'package_name.i386<8.3'
- Установка пакетов по wildcard
zypper install package_n*
zypper in package_n*
Примечание: Эта команда установит ВСЕ пакеты, содержащие в своем имени "package_n" и любые иные символы после "n".
- Установка пакетов по паттерну
zypper install -t pattern pattern_name
zypper in -t pattern pattern_name
- Установка пакета из определенного (частного) репозитория
zypper install package_name upd:some_repo_name
zypper in package_name upd:some_repo_name
- Установка пакета с указанием алиаса репозитория
zypper install package_name repo_name
zypper in package_name repo_name
- Одновременная инсталляция и удаление пакетов
zypper install emacs -vi
zypper in emacs -vi
Примечание: Эта команда одновременно удалит пакет консольного редактора vi (который есть "Число Зверя") :) и установит пакет непревзойденного б-гоугодного редактора emacs (за авторством RMS)... Поздравляю!
- Удаление пакетов
zypper remove package_name
zypper rm package_name_1 package_name_2
- Удаление пакетов по паттерну
zypper remove -t pattern pattern_name
zypper rm -t pattern pattern_name
- Удаление пакета вместе с зависимостями
zypper remove --clean-deps package_name
zypper rm -u package_name
Примечание: я рекомендую использовать именно эту команду при удалении пакетов.
- Установка пакета из исходных кодов с его зависимостями
zypper source-install package_name
zypper si package_name
Примечание: Команда, приведенная выше, скачает все пакеты, необходимые для компилляции пакета "package_name". По умолчанию пакеты будут инсталлированы по адресу:
/usr/src/packages/
- Инсталляция только исходных кодов пакета
zypper install -D package_name
zypper in -D package_name
Примечание: Данная команда загрузит только исходные коды пакета "package_name".
- Инсталляция зависимостей без установки основного пакета
zypper source-install --build-deps-only package_name
zypper si -d package_name
Примечание: В данном случае будут загружены только зависимости (без основного пакета, который они обслуживают). Это полезно в случае, если нужно определить - какие зависимости требуются для установки того или иного пакета.
- Установка и удаление пакетов в "quiet" ("молчаливом") режиме
Инсталляция (варианты):
zypper --quiet install package_name
zypper --quiet in package_name
zypper install -y package_name
Удаление (варианты):
zypper –quiet remove package_name
zypper –quiet rm package_name
zypper --quiet rm -y package_name
zypper --quiet remove --no-confirm package_name
zypper remove --no-confirm package_name
- Понижение (downgrade) версии установленного пакета
zypper install --oldpackage package_name=8.3.4
zypper install --force package_name=8.3.4
zypper in --oldpackage package_name=8.3.4
zypper in -f package_name=8.3.4
- Просмотр заблокированных пакетов
zypper locks
zypper ll
Примечание: Вы имеете право заблокировать некоторые пакеты (запретив им обновление и удаление). Эти действия гипотетически могут привести к неразрешимым зависимостям при обновлении ОС и прикладных пакетов. В подобном случае рекомендовано проверить список заблокированных пакетов.
- Блокировка пакета
zypper addlock package_name
zypper al package_name
- Разблокировка пакета
zypper removelock package_name
zypper rl package_name
4. Управление операционной системой
- Просмотр доступных обновлений с удовлетворенными зависимостями
zypper list-updates
zypper lu
Примечание: Команда, приведенная выше, покажет только пакеты с удовлетворенным зависимостями. Чтобы показать все обновления, следует использовать команду, приведенную ниже.
- Просмотр всех доступных обновлений
zypper list-updates --all
zypper lu -a
- Просмотр обновлений, доступных в специфичном репозитории
zypper list-updates --repo repo_name
zypper lu -r repo_name
- Обновление операционной системы и прикладного программного обеспечения
zypper update
zypper up
Примечание: Эта команда обновит все системные и прикладные пакеты. В целях поддержания стабильности и устойчивости на особо критических участках деятельности, ее рекомендуется применять последовательно, т.е. если вас не устраивает установка одних лишь патчей (см. ниже команду zypper patch) - "точечных" исправлений, ликвидирующих отдельные уязвимости и т.п.
Примечание: Команда характерна для OpenSUSE Leap; для OpenSUSE Tumbleweed рекомендовано применять zypper dist-upgrade (подробности см. ниже).
- Просмотр доступных патчей для системы
zypper list-patches
zypper list-patches --all
zypper lp
zypper lp -a
- Просмотр патчей из bugzilla (в т.ч. - с указанием версии CVE)
zypper list-patches --bugzilla=123456
zypper list-patches --bugzilla=CVE-2023-1234
- Установка патчей
zypper patch
zypper patch --auto-agree-with-licenses
zypper patch --dry-run
zypper patch -D
Примечание: Опция --auto-agree-with-licenses позволит автоматически принять лицензионные соглашения; опция -–dry-run - позволит проанализировать предлагаемые изменения без реальной установки патчей.
Примечание: Установка патчей, т.е. "точечных" исправлений, ликвидирующих отдельные уязвимости (без обновления всей ОС и прикладного ПО, т.е. без выполнения команды zypper update) - наиболее безопасный и консервативный метод, применимый для стабильного дистрибутива OpenSUSE Leap.
Примечание: Команда zypper patch бесполезна для OpenSUSE Tumbleweed, т.к. он является т.н. "роллинг-релизом" (непрерывно обновляемой ОС).
- Обновление сервисов
zypper refresh --services
zypper refresh -s
Примечание: Опция обновления сервисов отключена по умолчанию.
- Проверка целостности всех зависимостей пакетов, установленных в ОС
zypper verify
zypper ve
zypper verify --details
zypper ve --details
Примечание: Опция --details позволит вывести детализированную информацию.
- Установка патчей для Zypper
zypper patch --updatestack-only
- Просмотр "сиротских" (orphaned) пакетов и зависимостей в ОС
zypper packages --orphaned
Важно! Удаляйте такие пакеты только если они действительно не используются в качестве зависимостей или в иных процессах!
- Просмотр активных процессов, которые используют файлы, удаляемые посредством Zypper
zypper ps
Примечание: При удалении пакетов и их зависимостей, некоторые могут использоваться текущими процессами ОС. Данная команда покажет их список. Используйте рестарт (перезапуск) процессов после действий, связанных с удалением этих файлов.
- Просмотр активных системных процессов, которые используют файлы, удаляемые Zypper
zypper ps-ss
- Очистка кэша Zypper
zypper clean
zypper cc
Примечание: Команда, приведенная выше, очистит только кэш всех или избранных репозиториев. Для совместного удаления метадаты репозитория и его кэша, используйте команду, приведенную ниже.
- Очистка кэша и метадаты
zypper clean --all repo_name
- Просмотр требуемых и рекомендуемых модулей
zypper info --requires package_name
zypper if --requires package_name
zypper info --recommends package_name
zypper if --recommends package_name
- Версионное обновление операционной системы
zypper dist-upgrade
zypper dup
Примечание: Команда проанализирует, сохранит и применит все состояния активных репозиториев, инсталляций и downgrade-пакетов к новой версии ОС. Ее следует отличать от команды zypper update (см. выше). Примечание: Необходимо также осознавать и дифференцировать последствия ее выполнения:
1) zypper dist-upgrade является приоритетным способом обновления OpenSUSE Tumbleweed - в данном случае будет обновлен "снапшот" (текущий "срез" или "снимок) ОС - т.е. kernel, systemd и прочие составляющие и компоненты.
2) В OpenSUSE Leap данная команда обновит минорную версию ОС на следующую (например: 15.3 - на 15.4 и т.п.).
🄯 Rami Rosenfeld, 2023. GNU FDL 1.3.