SDB:Zypper использование 11.3

Перейти к: навигация, поиск


Эта статья об использовании Zypper, консольной программы управления пакетами, использующей библиотеку Libzypp. Она содержит дополнительную информацию к странице справки по Zypper (man zypper). Чего нет здесь, должно иметься на странице справки, и наоборот.

Содержание

Краткая справка

Вот то, что, вероятно, используется чаще всего:

zypper                # вывести список доступных глобальных опций и команд
zypper help search    # вывести справку для команды search
zypper lр             # увидеть, какие требуются патчи-обновления
zypper patch          # применить необходимые патчи
zypper se sqlite      # поиск sqlite
zypper rm sqlite2     # удалить sqlite2
zypper in sqlite3     # установить sqlite3
zypper in yast*       # установить все пакеты по шаблону yast*
zypper up             # обновить все установленные пакеты до последних версий, где возможно

Памятка

Здесь можно найти информацию с данной страницы (на английском языке), сжатую до формата памятки. Она также включает некоторые сведения, взятые со страниц справки. Использовать её рекомендуется после анализа информации, приведённой в настоящей статье.

Первая страница в формате A4.
Вторая страница в формате A4.
Первая страница в формате letter.
Вторая страница в формате letter.

Общее использование

Общий синтаксис zypper следующий:

# zypper [глобальные опции] команда [опции команды] [аргументы]…

Компоненты в квадратных скобках не обязательны, и таким образом, самый простой способ выполнить zypper — ввести его имя, а после него — команду. Например, чтобы применить необходимые патчи для системы, набрать:

# zypper patch

Кроме того, можно выбрать одну или несколько глобальных опций, введя их прямо перед командой: (выполняй команду, но не спрашивай ни о чём, решай по своему усмотрению):

# zypper --non-interactive patch

Чтобы использовать опции, относящиеся к определённой команде, ввести их сразу же после команды: (примени необходимые патчи для системы, но не спрашивай подтверждения согласия с условиями лицензий, я их уже прочитал):

# zypper patch --auto-agree-with-licenses

Некоторые команды требуют одного или нескольких аргументов: (установить или обновить пакет mplayer):

# zypper install mplayer

Некоторые из опций также требуют аргумент: (поиск по шаблону):

# zypper search -t pattern

Всё вышеперечисленное в сочетании: (установить mplayer и amarok только с использованием репозитория factory в режиме подробного вывода):

# zypper -v install --repo factory mplayer amarok

Подсказки пользователю

Всякий раз, когда zypper требует ввода данных от вас, он в скобках рядом с текстом подсказки показывает возможные ответы. Чтобы выбрать ответ по умолчанию, просто нажать <ввод> (ответ по умолчанию печатается заглавными буквами (за исключением не-ASCII символов)). Некоторые подсказки также предоставляют справку, в этом случае имеется знак вопроса "?" в качестве одного из вариантов ответа. Чтобы zypper использовал ответы по умолчанию без взаимодействия с пользователем, использовать глобальную опцию --non-intereactive.


Словарь

  • репозиторий — локальная или удалённая директория, содержащая пакеты и различные данные о пакетах (метаданные пакета). Репозитории ранее назывались источниками установки, сервисами или каталогами.
  • псевдоним — псевдоним репозитория представляет собой краткий вариант названия репозитория для использования в командах и опциях для работы с репозиториями, например, removerepo или --repo.
  • пакет — пакет программного обеспечения (пакет RPM, пакет исходного кода). Патчи, модели и продукты также обычно рассматриваются как различные виды пакетов.
  • патч — пакет или группа пакетов, необходимых для установки обновления (в основном, исправление ошибки).
  • шаблон — представляет группу пакетов. Например, шаблон Http Server будет иметь зависимости, определённые таким образом, чтобы вызвать установку всех пакетов, необходимых для запуска и управления http-сервера, после установки шаблона.
  • продукт — представляет собой полный продукт (например, «openSUSE 11.1»).
Примечание переводчика: при русификации сообщений, выводимых zypper, слово patch переведено как исправление, а в данной статье — как патч, так как патч в настоящее время широко используется как в переводных, так и в оригинальных текстах по компьютерной тематике --Dg333 05:50, 18 июня 2012 (MDT)

Команды

Zypper предоставляет ряд команд, которые могут быть сгруппированы в следующие категории:

  • управление репозиториями
    refresh, repos, addrepo, removerepo, modifyrepo, namerepo
    refresh-services, services, addservice, removeservice, modifyservice
  • управление пакетами
    install, remove, source-install
  • управление обновлениями
    patch, list-patches, patch-check, patches, update, list-updates, dist-upgrade
  • запросы
    search, info, what-provides, list-updates, patch-check, patches, packages, patterns, products
  • блокировка
    locks, addlock, removelock, cleanlocks
  • утилиты
    verify, install-new-recommends
  • прочее
    help, licenses, versioncmp, targetos

Печать справки

Прежде всего, хорошо знать, как получить помощь. Чтобы вывести общую справку (список команд и глобальные опции), просто ввести zypper без опций и аргументов. Чтобы вывести справку для конкретной команды, использовать:

# zypper help [команда]

Чтобы получить конкретную помощь по команде, использовать:

# zypper [команда] --help

Заметим, что также для удобства можно вводить -h вместо --help.

Управление репозиториями

Можно задавать существующие репозитории по их номерам в списке, выводимом zypper lr, псевдониму или URI. При использовании номера всегда проверять сначала zypper lr, так как номера могут меняться после изменений в репозиториях.

Вывод списка определённых репозиториев

repos или lr

Пример вывода:

$ zypper lr
# | Псевдоним             | Имя                   | Включён  | Обновление
--+-----------------------+-----------------------+----------+-----------
1 | packman               | Packman 11.1          | Да       | Нет
2 | fate                  | fate                  | Нет      | Нет
3 | openSUSE-11.1-Updates | Updates for 11.1      | Да       | Да
4 | repo-oss              | openSUSE-11.1-Oss     | Да       | Нет
5 | repo-non-oss          | openSUSE-11.1-Non-Oss | Да       | Нет
6 | repo-debug            | openSUSE-11.1-Debug   | Нет      | Нет
# zypper lr 5 4
Псевдоним                : openSUSE-11.3-Non-Oss
Имя                      : openSUSE-11.3-Non-Oss
URI                      : http://download.opensuse.org/distribution/11.3/repo/non-oss/
Включён                  : Да
Приоритет                : 99
Автоматическое обновление: Выкл
Хранить пакеты           : Выкл
Тип                      : yast2                                                       
Проверка GPG             : Вкл
URI ключа GPG            : 
Префикс пути             : /
Родительская служба      : 
Путь кэша MD             : /var/cache/zypp/raw/openSUSE-11.3-Non-Oss

Псевдоним                : openSUSE-11.3-Oss
Имя                      : openSUSE-11.3-Oss
URI                      : http://download.opensuse.org/distribution/11.3/repo/oss/
Включён                  : Да
Приоритет                : 99
Автоматическое обновление: Выкл
Хранить пакеты           : Выкл 
Тип                      : yast2
Проверка GPG             : Вкл
URI ключа GPG            :   
Префикс пути             : /
Родительская служба      :
Путь кэша MD             : /var/cache/zypp/raw/openSUSE-11.3-Oss

Другие примеры:

 zypper lr -u # включить также URI репозитория
 zypper lr -d # включить несколько других свойств
 zypper lr -P # включить в таблицу также приоритет репозитория и отсортировать список по нему
 zypper lr -e my # экспорт всех определений репозиториев в файл с именем "my.repo" 

Добавление репозиториев

addrepo или ar

Перед установкой пакетов следует определить хотя бы один репозиторий. Для добавления репозитория используется команда addrepo:

Пример вывода:

Добавление репозитория 'vlc' [готово]
Репозиторий 'vlc' успешно добавлен
Включён: Да
Автоматическое обновление: Нет
URI: http://download.videolan.org/pub/vlc/SuSE/11.1

Другие примеры:

zypper ar http://download.opensuse.org/repositories/X11:/XGL/openSUSE_11.1/X11:XGL.repo  # посредством файла .repo
zypper ar -c ftp://some.download.site myalias   # прозондировать репозитори после добавления
zypper ar my/dir/with/rpms local                # добавить локальную директорию с rpm-файлами как репозиторий

См. также Libzypp со списком поддерживаемых типов носителей и URI.

Обновление репозиториев

refresh или ref

После добавления репозитория или при потере им актуальности следует обновить. Это означает загрузку метаданных пакета из него и предварительную обработку данных в кэш .solv для быстрого считывания.

# zypper refresh
Репозиторий 'ATI/AMD-FGLRX' актуален.
Получение метаданных репозитория 'VLC' [готово]
Сбор кэша репозитория 'VLC' [готово]
Репозиторий 'contrib' актуален.
Репозиторий 'kde3' актуален.
Репозиторий 'nVidia Graphics Drivers' актуален.
Репозиторий 'openSUSE-11.4-Non-Oss' актуален.
Репозиторий 'openSUSE-11.4-Oss' актуален.
Получение метаданных репозитория 'openSUSE-11.4-Update' [готово]
Сбор кэша репозитория 'openSUSE-11.4-Update' [готово]
Все репозитории обновлены.

Если включено автоматическое обновление для репозитория, об обновлении не нужно заботиться, оно проходит автоматически, когда необходимо. Тем не менее, некоторые предпочитают контролировать выполнение обновления (например, чтобы избежать ожидания завершения обновления, когда нужно лишь увидеть “zypper info krusader”), поэтому они отключают автообновление. Подробности см. в man zypper.

Другие примеры:

zypper ref packman main # можно также конкретизировать, какие репозитории подлежат обновлению
zypper ref -f upd       # принудительное обновление для репозитория “udp” 

Удаление репозитория

removerepo или rr

# zypper rr vlc 1 23 foo
Repository 23 not found by alias, number or URI.
Repository foo not found by alias, number or URI.
Removing repository 'repo-debug' [done]
Repository 'repo-debug' has been removed.
Removing repository 'vlc' [done]
Repository 'vlc' has been removed.

Изменение репозиториев

modifyrepo или mr

Отключить репозиторий № 6:

# zypper mr -d 6
Репозиторий 'repo-non-oss' успешно отключён.

Включить автообновление и кэширование RPM-файлов для репозитория 'packman' и установить ему приоритет 70:

# zypper mr -rk -p 70 packman
Autorefresh has been enabled for repository 'packman'.
RPM files caching has been enabled for repository 'packman'.
Repository 'packman' priority has been set to 70.

Отключить кэширование RPM-файлов для всех репозиториев:

# zypper mr -Ka
Nothing to change for repository 'local'.
RPM files caching has been disabled for repository 'packman'.
Nothing to change for repository 'fate'.
Nothing to change for repository 'upd'.
Nothing to change for repository 'repo-oss'.
Nothing to change for repository 'repo-non-oss'.

Включить кэширование RPM-файлов для всех репозиториев:

# zypper mr -ka
RPM files caching has been enabled for repository 'repo-non-oss'.
RPM files caching has been enabled for repository 'Main Repository (OSS)'.
RPM files caching has been enabled for repository 'Main Repository (NON-OSS)'.
RPM files caching has been enabled for repository 'openSUSE-11.1-Updates'.

Переименование репозиториев

renamerepo или nr

# zypper nr 3 upd
Repository 'openSUSE-11.1-Updates' renamed to 'upd'.

Эта команда в настоящее время позволяет изменить только псевдоним репозитория. Чтобы изменить отображаемое название репозитория, обратитесь к команде mr.

Псевдонимы следует делать короткими и простыми для простоты использования в качестве аргументов команд и опций --repo. Использование псевдонимов надёжнее использования номеров репозиториев (так как они могут измениться, и вы можете легко сделать ошибку) и удобнее использования URI (так как они длинные, их приходится копировать и вставлять из буфера).

Экспорт/импорт репозиториев

repos --export или lr -e

Можно экспортировать список репозиториев в файл и импортировать его позже или на другой машине.

# zypper lr --export backups/repos/foo.repo
# zypper ar backups/repos/foo.repo

Управление сервисами

<добавить после появления информации в оригинале>

Управление пакетами

Выбор пакетов

Есть несколько способов выбрать пакеты для установки или удаления.

  • по имени возможности
    zypper in eclipse
    zypper in qt
  • по имени возможности и/или архитектуре и/или версии
    zypper in 'zypper<0.12.10'
    zypper in zypper.i586=0.12.11
  • по точному названию пакета (--name)
    zypper in -n ftp
  • по точному названию пакета и репозитория (подразумевается --name)
    zypper in factory:zypper
  • по названию пакета с маской
    zypper in yast*ftp*
  • задав .rpm-файл пакета для установки

Установка пакетов

install или in

Можно установить пакеты по названию…

# zypper install chromium
Загрузка данных о репозиториях...
Чтение установленных пакетов...
Разрешение зависимостей пакетов...

Будут установлены следующие НОВЫЕ пакеты:
  chromium chromium-desktop-gnome chromium-suid-helper libv8-3 

Следующий рекомендованный пакет был выбран автоматически:
  chromium-desktop-gnome 

Следующий рекомендованный пакет не будет установлен:
  chromium-desktop-kde 

4 новых пакета для установки.
Полный размер загрузки: 29,7 MiB. После этой операции будет использовано дополнительно 108,3 MiB.
Продолжить? [y/n/?] (y): y

Получение пакет libv8-3-3.11.7.0-2.1.i586 (1/4), 1,5 MiB (5,5 MiB после распаковки)
Получение: libv8-3-3.11.7.0-2.1.i586.rpm [готово (98,3 KiB/s)]
Получение пакет chromium-suid-helper-21.0.1158.0-3.1.i586 (2/4), 43,0 KiB (14,0 KiB после распаковки)
Получение: chromium-suid-helper-21.0.1158.0-3.1.i586.rpm [готово (21,7 KiB/s)]
Получение пакет chromium-21.0.1158.0-3.1.i586 (3/4), 28,2 MiB (102,8 MiB после распаковки)
Получение: chromium-21.0.1158.0-3.1.i586.rpm [готово (332,7 KiB/s)]
Получение пакет chromium-desktop-gnome-21.0.1158.0-3.1.i586 (4/4), 39,0 KiB (3,0 KiB после распаковки)
Получение: chromium-desktop-gnome-21.0.1158.0-3.1.i586.rpm [готово]
Установка: libv8-3-3.11.7.0-2.1 [готово]
Установка: chromium-suid-helper-21.0.1158.0-3.1 [готово]
Дополнительный вывод rpm:
setting /usr/lib/chrome_sandbox to root:root 4755. (wrong permissions 0755)

Установка: chromium-21.0.1158.0-3.1 [готово]
Установка: chromium-desktop-gnome-21.0.1158.0-3.1 [готово]

...или по предоставляемой ими возможности:

# zypper in MozillaFirefox \< 3
Чтение установленных пакетов…
'MozillaFirefox', предоставляющий 'MozillaFirefox<3' уже установлен.
Действий не требуется.
# zypper in MozillaFirefox \>= 3
Чтение установленных пакетов…

Следующие пакеты будут обновлены:
  mozilla-xulrunner190-translations MozillaFirefox mozilla-xulrunner190-gnomevfs
mozilla-xulrunner190 MozillaFirefox-translations


Следующий пакет будет УДАЛЁН:
  mozilla-xulrunner190-lang


Общий размер загрузки: 11,0 M. После операции 12,9 M будут освобождены.
Продолжить? [Y/n/p/?]:
# zypper in 'libqtiff.so()(64bit)'
Чтение установленных пакетов…
'libqt4-x11', предоставляющий 'libqtiff.so()(64bit)', уже установлен.
Действий не требуется.

Другие примеры:

zypper in yast*                    # установить все модули yast*
zypper in -t pattern lamp_server   # установить шаблон lamp_server (пакеты, необходимые для LAMP-сервера)
zypper in vim -emacs               # установка vim и удаление emacs за один раз
zypper in amarok packman:libxine1  # установка libxine1 из packman и amarok из любого репозитория
zypper in bitchx-1.1-81.x86_64.rpm # установить RPM-пакет bitchx из локальной директории
zypper in -f subversion            # принудительная переустановка субверсии 

Удаление пакетов

remove или rm

Команда remove очень похожа на команду install, за исключением того, что эффект противоположный :O)

# zypper remove sqlite
Чтение установленных пакетов…

Следующие пакеты будут УДАЛЕНЫ:
  sqlite3 perl-DBD-SQLite git-cvs git


После операции 351,0 K будет освобождено.
Продолжить? [YES/No]: п

Пакеты исходного кода и зависимости для сборки

source-install или si

# zypper si zypper
Загрузка данных о репозиториях...
Чтение установленных пакетов...
'sqlite' не найдено в именах пакетов. Поиск возможностей.
Разрешение зависимостей пакетов...

Будут УДАЛЕНЫ следующие пакеты:
  libqt4-devel libQtWebKit-devel phonon-devel sqlite3 sqlite3-devel 

5 пакетов для удаления.
После этой операции будет освобождено 33,3 MiB.
Продолжить? [y/n/?] (y):

Можно также установить только зависимости сборки или только исходный код:

zypper si -D zypper # только пакеты с исходными текстами (без зависимостей для сборки)
zypper si -d zypper # только зависимости для сборки (без исходного кода) 

Обновление пакетов

update или up

Следующие команды используются для обновления пакетов до более новых версий. См. также Управление обновлениями для получения дополнительной информации.

zypper up                # обновить все установленные пакеты до новой версии, насколько это возможно
zypper up libzypp zypper # обновить libzypp и zypper
zypper in sqlite3        # обновить sqlite3 или установить его, если ещё не установлен 

Запросы

Поиск пакетов

search или se

По умолчанию команда search позволяет искать пакеты любого типа, статуса или репозитория, имеющие имена, содержащие заданную строку (сравнение без учёта регистра):

# zypper se sqlite
Чтение установленных пакетов…

S | Name                     | Summary                                                        | Type
--+--------------------------+----------------------------------------------------------------+--------
  | libapr-util1-dbd-sqlite3 | DBD driver for SQLite 3                                        | package
i | libgda-3_0-sqlite        | Sqlite Provider for GNU Data Access (GDA)                      | package
  | libqt4-sql-sqlite        | Qt 4 sqlite plugin                                             | package
i | libsqlite3-0             | Shared libraries for the Embeddable SQL Database Engine        | package
  | libsqlite3-0-32bit       | Shared libraries for the Embeddable SQL Database Engine        | package
  | mediatomb-sqlite         | UPnP AV MediaServer                                            | package
i | mono-data-sqlite         | Database connectivity for Mono                                 | package
  | pdns-backend-sqlite2     | SQLite 2 backend for pdns                                      | package
  | pdns-backend-sqlite3     | SQLite 3 backend for pdns                                      | package
i | perl-DBD-SQLite          | The DBD::SQLite is a self contained RDBMS in a DBI driver      | package
i | php5-sqlite              | PHP5 Extension Module                                          | package
  | python-sqlite2           | Python bindings for sqlite 2                                   | package
  | qt3-sqlite               | SQLite Database Plug-In for Qt                                 | package
  | rekall-sqlite            | Rekall sqlite Database Backend                                 | package
  | rubygem-sqlite3          | A Ruby interface for the SQLite3 database engine               | package
i | sqlite2                  | Embeddable SQL Database Engine                                 | package
  | sqlite2-32bit            | Embeddable SQL Database Engine                                 | package
  | sqlite2-devel            | Embeddable SQL Database Engine                                 | package
i | sqlite3                  | Embeddable SQL Database Engine                                 | package
  | sqlite3-devel            | Embeddable SQL Database Engine                                 | package
  | sqlite3-tcl              | Tcl binding for SQLite                                         | package
  | tntdb1-sqlite            | Tntdb is a c++-class-library for easy database-access - sqlite | package
  | ulogd-sqlite             | SQLite output plugin for ulogd                                 | package

Буква “i” в колонке 1 (первой) означает, что пакет уже установлен на локальной машине. Для просмотра всех доступных версий для пакетов используется опция “--details/-s”:

# zypper search -s --match-exact virtualbox-ose
Чтение установленных пакетов…

S | Name           | Type    | Version    | Arch   | Repository
--+----------------+---------+------------+--------+------------------------------------
v | virtualbox-ose | package | 1.6.2-2.1  | x86_64 | VirtualBox OSE
i | virtualbox-ose | package | 1.5.6-33.1 | x86_64 | openSUSE-11.1-Oss
v | virtualbox-ose | package | 1.5.6-20.5 | x86_64 | VirtualBox OSE (
v | virtualbox-ose | package | 1.6.2-2.1  | i586   | VirtualBox OSE
v | virtualbox-ose | package | 1.5.6-33.1 | i586   | openSUSE-11.1-Oss
v | virtualbox-ose | package | 1.5.6-20.3 | i586   | VirtualBox OSE

Буква “i” в колонке 1 (первой) означает, что выбранное программное обеспечение уже установлено на локальной машине, а буква “v” в колонке 1 (первой) означает, что существуют и другие версии продукта, установленного на локальной машине.

Другие примеры:

zypper se -dC --match-words RSI   # поиск сокращения RSI (с учётом регистра), в том числе в сводках и описаниях
zypper se 'yast*'                 # показ всех пакетов с названиями, начинающимися с “yast” (учитывать возможность дополнения команды командной оболочкой, брать строку в кавычки во избежание неожиданностей!)
zypper se -r packman              # показ всех пакетов из репозитория “packman”
zypper se -i sqlite               # показ всех установленных пакетов с “sqlite” в названиях
zypper se -t pattern -r repo-oss  # показ всех шаблонов в репозитории “repo-oss”
zypper se -t product              # показ всех доступных продуктов

Получение информации о пакетах

info или if

zypper info amarok

Чтение установленных пакетов...


Сведения — пакет amarok:

Репозиторий: @System
Имя: amarok
Версия: 2.4.0-8.11.3
Архитектура: i586
Производитель: openSUSE
Установлен: Да
Состояние: актуален
Размер после установки: 22,7 MiB
Сводка: Media Player for KDE
Описание: 
Amarok is a media player for all kinds of media. This includes MP3, Ogg
Vorbis, audio CDs, podcasts and streams. Play lists can be stored in
.m3u or .pls files.

Эта команда показывает подробную информацию о пакете с именем “amarok”.

Другие примеры:

zypper info -t patch MozillaFirefox    # показать информацию о патче “MozillaFirefox”
zypper patch-info MozillaFirefox       # то же, что и выше
zypper info -t pattern lamp_server     # показать информацию о шаблоне “lamp_server”
zypper info -t product openSUSE-FTP    # показать информацию об указанном продукте

Зависимости

what-provides или wp

Вывод списка всех поставщиков заданной возможности:

# zypper wp firefox
Чтение установленных пакетов…
С | Имя            | Тип   | Версия       | Архитектура | Репозиторий         
--+----------------+-------+--------------+-------------+---------------------
  | MozillaFirefox | пакет | 13.0-25.2    | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 12.0-18.1    | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 11.0-0.15.2  | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 10.0.2-0.2.1 | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 10.0.1-0.2.1 | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 10.0-0.2.1   | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 9.0-0.2.1    | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 8.0-0.2.2    | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 7.0.1-0.2.1  | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 7.0-1.2.1    | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 6.0.2-0.2.1  | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 6.0-2.2.1    | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 5.0-0.4.1    | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 4.0.1-0.2.2  | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 4.0.0-0.3.1  | i586        | openSUSE-11.4-Update
  | MozillaFirefox | пакет | 4.0b12-1.2.1 | i586        | openSUSE-11.4-Oss

Данная команда похожа на rpm -q --whatprovides firefox, но rpm может опросить только базу данных RPM (база данных установленных пакетов). Zypper, с другой стороны, покажет поставщиков возможности из любого репозитория, а не только установленных.

Прочие запросы

Команды patches, packages, patterns, и products похожи на search -s -t [patch,package,pattern,product], за исключением того, что они показывают дополнительную информацию, специфичную для соответствующего типа пакета. Например, patches также показывает статус патчей (требуется/безопасность/неприменимо).

Команды list-updates и patch-check рассматриваются в разделе Управление обновлениями.

Блокировки пакетов

locks или ll
addlock или al
removelock или rl
cleanlocks или cl

Блокировки пакетов служат для предотвращения изменений пакетов в системе. Пакеты, для которых действует активная блокировка, не могут изменить свой статус установки, установленные пакеты не могут быть удалены или обновлены, неустановленные пакеты не могут быть установлены.

Чтобы заблокировать все пакеты с именами, начинающимися с “yast2”, выполнить:

# zypper al 'yast2*'
Чтение установленных пакетов…
Указанная блокировка успешно добавлена.

Опять же следует опасаться дополнения команд оболочки, использовать кавычки, если есть возможность, что yast* будут соответствовать некоторые файлы или директории в рабочей директории.

Получение списка активных блокировок:

# zypper ll
# |     | Тип     | Репозиторий
--+------------------+---------+-----------
1 | libpoppler3      | пакет   | (любое)
2 | libpoppler-glib3 | пакет   | (любое)
3 | yast*            | пакет   | (любое)

Снятие блокировки:

# zypper rl yast2-packager
Чтение установленных пакетов…
Следующий запрос блокирует некоторые объекты, которые вы хотите разблокировать:

тип: пакет
тип соответствия: глобально
с учётом регистра: вкл.
solvable_name: yast2*

Вы хотите удалить эту блокировку? [да/нет]: да
Счётчик блокировок был успешно уменьшен на: 1

Другие примеры:

zypper al zypper # заблокировать пакет “zypper” (точное совпадение)
zypper al -r repo-oss virtualbox* # ограничить блокировку репозиторием “repo-oss” (позволив установку из других)
zypper rl 3 # снять блокировку по номеру

Управлять блокировками можно также путём прямого редактирования файла блокировок.

Утилиты

Проверка зависимостей

verify или ve

Иногда в системе могут возникнуть неполадки из-за несоблюдения зависимостей пакетов. Если некоторые из приложений не стартуют, выдавая сообщения об отсутствии чего-то, это можно проверить с помощью zypper:

$ rpm -e --nodeps mozilla-xulrunner190 $ firefox
Не удалось найти совместимый GRE между версией 1.9.0 и 1.9.0.
# zypper ve
Чтение установленных пакетов…
Некоторые из зависимостей установленных пакетов нарушены. Для исправления этих зависимостей требуется следующее:

Следующие НОВЫЕ пакеты будут установлены:
  mozilla-xulrunner190


Общий размер загрузки: 6,5 Mб. После операции будут использованы дополнительно 23,5 Мб.
Продолжить? [ДА/нет]: да


Установка новых рекомендуемых пакетов

install-new-recommends или inr

Эта команда находит и устанавливает новые рекомендуемые пакеты для пакетов, которые уже установлены. Это обеспечивает простой способ получить новые пакеты локализации для вашего программного обеспечения или драйверы для новых устройств.

# zypper inr
Чтение установленных пакетов…

Следующие НОВЫЕ пакеты будут установлены:
  kdebase4-openSUSE-lang bundle-lang-common-cs


Общий размер загрузки: 534,0 кб. После операции будет использовано дополнительно 1,9 Мб.
Продолжить? [ДА/нет]:

Проверка процессов

ps

Эта команда показывает процессы, которые используют файлы, удалённые при последнем обновлении или удалении пакета

Есть некоторые программы, которые используют файлы, удалённые при последнем обновлении. Может потребоваться перезапуск некоторых из них. Для просмотра этих программ выполнить “zypper ps”.
# zypper ps
Следующие запущенные процессы используют удалённые файлы:

PID   | PPID  | UID  | Login | Command       | Service | Files
------+-------+------+-------+---------------+---------+--------------------------------
10604 | 10603 | 1000 | geeko | chrome        |         | /usr/share/mime/mime.cache
      |       |      |       |               |         | /usr/share/mime/mime.cache
15304 | 3195  | 1000 | geeko | kio_thumbnail |         | /var/tmp/kdecache-geeko/ksycoca4
      |       |      |       |               |         | /var/tmp/kdecache-geeko/ksycoca4

Может потребоваться перезапуск этих процессов.
См. “man zypper” для получения информации о значениях величин в указанной таблице.

Управление обновлениями

Есть два подхода к поддержанию системы в актуальном состоянии. Один — «по патчам», второй — «по пакетам».

«Попатчевый» подход особенно полезен для людей, использующих стабильный релиз и желающих обновлять систему с помощью патчей из он-лайновых репозиториев обновлений. Репозитории обновлений добавляются по умолчанию при установке или обновлении системы или могут быть добавлены через пункт «Конфигурация онлайн-обновления» на вкладке «Программное обеспечение» в Центре управления YaST или вручную с помощью zypper. Вот список доступных репозиториев обновлений openSUSE.

Эквивалент эта функции в YaST — модуль «обновление он-лайн.

Второй, «попакетный» способ обновлений описан в разделе описан в разделе «Обновление пакетов» и служит для общего обновления пакетов из любых репозиториев до более новых версий.

Список необходимых патчей

list-patches или lp

Вывод списка всех необходимых патчей-обновлений:

# zypper lp
Чтение установленных пакетов…
Патчи

Репозиторий      | Имя                | Версия  | Категория   | Статус
-----------------+--------------------+---------+-------------+-----------
Updates for 11.1 | KDE4-fixes         | 38      | recommended | нужно
Updates for 11.1 | MozillaFirefox     | 50      | recommended | нужно
Updates for 11.1 | NetworkManager-kde | 49      | recommended | нужно

Иногда выводятся только обновления управления пакетами, так как они должны применяться в первую очередь. После их применения указанная команда выведет остальные доступные обновления.

Эта команда эквивалентна zypper up -t patch для более ранних версий zypper. Вывод всех доступных обновлений пакетов:

# zypper lu

Применение патчей

patch

Применение необходимых патчей:

# zypper patch
Получение метаданных репозитория 'openSUSE-11.4-Update' [готово]
Сбор кэша репозитория 'openSUSE-11.4-Update' [готово]
Загрузка данных о репозиториях...
Чтение установленных пакетов...
Разрешение зависимостей пакетов...

Будут установлены следующие НОВЫЕ исправления:
  openSUSE-2012-312 softwaremgmt-201105 softwaremgmt-201107 softwaremgmt-201112 

Будет УДАЛЁН следующий пакет:
  opensuse-codecs-installer 

Будут обновлены следующие пакеты:
  libpackagekit-qt14 libqdialogsolver1 PackageKit PackageKit-branding-openSUSE PackageKit-browser-plugin 
  PackageKit-gstreamer-plugin PackageKit-gtk-module python-satsolver 

8 пакетов для обновления, 1 для удаления.
Полный размер загрузки: 1,1 MiB. После этой операции будет использовано дополнительно 111,0 KiB.
Продолжить? [y/n/?] (y):

Список всех патчей

patches

Команда list-updates выдаёт список только необходимых патчей. Вывод всех доступных патчей:

# zypper patches
Чтение установленных пакетов…
Каталог          | Имя                | Версия | Категория   | Статус
-----------------+--------------------+--------+-------------+-----------
Updates for 11.1 | KDE4-fixes         | 38     | recommended | Установлено
Updates for 11.1 | MozillaFirefox     | 50     | recommended | Установлено
Updates for 11.1 | NetworkManager-kde | 49     | recommended | Установлено
Updates for 11.1 | autoyast2          | 37     | recommended | Установлено
Updates for 11.1 | courier-authlib    | 42     | security    | Неприменимо
Updates for 11.1 | insserv            | 47     | recommended | Установлено
Updates for 11.1 | opera              | 43     | security    | Установлено

Проверка патчей

patch-check или pchk

Эта команда показывает наличие важных патчей для системы и количество подобных патчей:

# zypper pchk
Чтение установленных пакетов…
Необходимо 0 исправлений (0 обновлений безопасности)

Получение информации о патчах

patch-info
info -t patch

# zypper info -t patch MozillaFirefox
Чтение установленных пакетов…


Сведения — исправление MozillaFirefox:

Имя: MozillaFirefox
Версия: 50
Архитектура: noarch
Производитель: maint-coord@suse.de
Состояние: Установлено
Категория: recommended
Создан: Чтв  1 янв 1970 01:00:00
Требуется перезагрузка: Нет
Требуется перезапуск менеджера пакетов: Нет
Интерактивный: Нет
Сводка: Mozilla Firefox 3.0
Описание:
This patch updates Mozilla Firefox to the final 3.0 version.

The dependend libraries mozilla-xulrunner190, mozilla-nspr
and mozilla-nss were also brought to their release version.

Обновления пакетов

list-updates или lu
update или up

Простое обновление установленных пакетов до новейших доступных версий:

# zypper up

Получение списка доступных обновлений:

# zypper lu

Эти команды выводят список/производят обновление только пакетов, обновление которых не влечёт проблем с зависимостями. Получение необработанного списка пакетов с новыми версиями по сравнению с установленными:

# zypper lu -a

Будет показан список всех кандидатов для обновлений, независимо от возможности их установки и необходимости вмешательства пользователя для разрешения проблем.

Обновление дистрибутива

dist-upgrade или dup

Эта команда использует алгоритм обновления дистрибутива, обрабатывающий разделения пакетов, пакеты, оставшиеся без поддержки, и тому подобное. Используется для переключения на другой выпуск дистрибутива.

# zypper dup

Рекомендуется включить только основной репозиторий дистрибутива, который вы хотите установить, а также несколько важных используемых репозиториев (ещё лучше - их версию, соответствующую текущему основному репозиторию) во время дистанционного обновления. Этого можно добиться, отключив старые репозитории командой zypper mr -da, добавив новые репозитории командой zypper ar, а затем выполнив zypper dup. Можно также задать репозитории, которые будут использоваться, опцией --repo: zypper dup -r repo1 -r repo2….

Вопрос: Правда ли, что по команде “zupper up” происходит обновление пакетов, только когда новая версия находится в том же репозитории, что и устаревший пакет, а по команде “zypper dup” происходит обновления всего, независимо от репозитория, где находится новый пакет?

Ответ: По команде “zypper up” происходит обновление пакетов, если имеется новая версия, но не смена поставщика (Примечание: В настоящее время вся служба сборки имеет одного и того же поставщика). По команде “zypper dup” будет предпринята попытка синхронизировать уже установленные пакеты с пакетами, которые можно получить из (всех) репозиториев, которые вы включили. Это означает также, что произойдёт откат до более старых версий пакетов, если установленная версия новее, чем имеющаяся в репозитории.


Использование zypper в скриптах и приложениях

Zypper поддерживает несколько глобальных опций, которые делают его пригодным для использования в автоматизированных процессах, таких как скрипты. Кроме того, можно ознакомиться с некоторыми кодами выхода, перечисленными на справочной странице zypper, которые пригодятся при использовании zypper в автоматизированных процессах.


Неинтерактивный режим

--non-interactive

В этом режиме zypper ничего не запрашивает у пользователя и использует вместо этого ответы по умолчанию. Использование этой опции гарантирует, что zypper не зависнет в ожидании ответа на подсказку или вопрос в sdtin и не уйдёт в бесконечный цикл.

Например, чтобы обновить систему автоматически, без подтверждения, можно ввести:

# zypper --non-interactive update

Эта команда не требует подтверждения пользователя для осуществления обновления, пропускает все интерактивные патчи, которые потребовали бы дополнительного подтверждения, а также автоматически отвечает на любые другие запросы.


Режим без проверок GPG

--no-gpg-checks

Если используется эта опция, zypper будет всегда выполнять операцию, даже при непрохождении некоторых проверок GPG, например, если файл репозитория не подписан, хотя подпись требуется, файл подписан, но проверка GPG не пройдена, и т. д.


Автоматическое подтверждения согласия с лицензиями

--auto-agree-with-licenses

Специальная опция для команд установки, удаления и обновления. С её помощью пользователь заявляет своё согласие с условиями лицензии, которые установит команда, и zypper будет автоматически отвечать “да” на запросы подтверждения согласия с лицензией. Это полезно для тех, кто устанавливает одинаковый набор пакетов на нескольких машинах (с помощью автоматизированных процессов) и прочитал все лицензии раньше.

Тихий вывод

--quiet

Позволяет избежать отображения слишком больших объёмов текста, таких как информация о прогрессе, и отображает только результат операции и сообщения об ошибках.


Вывод в XML

--xmlout

Эта опция позволяет Zypper выводить сообщения в формате XML, что делает возможным для скриптов, графических пользовательских интерфейсов или других типов приложений, использующих Zypper, производить синтаксический разбор вывода Zypper чётко определённым, стандартным способом. С RNC-схемой XML-вывода Zypper можно ознакомиться здесь и в /usr/share/zypper/xml/xmlout.rnc.

Не все (но большинство) выводимых сообщений в настоящее время могут быть в XML, поставлена цель обеспечения возможности вывода всех сообщений в XML.


Подсказки

Ниже приведён по возможности полный перечень случаев, когда для работы zypper требуется взаимодействие с пользователем, вместе с ответами, используемыми в неинтерактивном режиме. Все указанные дополнительные опции имеют более высокий приоритет по сравнению с --non-interactive, поэтому при их использовании подразумеваемый ими ответ будет автоматически применён даже без использования --non-interactive.


Подсказки, связанные с GPG

Когда используется --no-gpg-checks, вывод сообщений или предупреждений происходит в stderr и журнал.

подсказка ответ по умолчанию с --no-gpgp-checks примечание
принять неподписанный файл? нет да
принять новый ключ (отклонить ключ, доверять временно или доверять всегда? [r/t/a]) отклонить отклонить новый ключ можно принять или импортировать только в интерактивном режиме
принять неизвестный ключ? нет да
проверить подписанный файл не удалось, продолжить? нет да
нет дайджеста для файла, продолжить? нет да
принять неизвестный дайджест? нет да

Прочие подсказки

подсказка ответ по умолчанию другой ответ примечание
продолжить установку/удаление/обновление? да кроме того, при выполнении команды установки/удаления/обновления можно использовать опцию --no-confirm даже без глобального использования --non-interactive
подтверждения лицензии третьей стороны нет да при использовании --auto-agree-with-licenses кроме того, для обновления Zypper можно использовать опцию --skip-interactive, чтобы исключить интерактивные патчи из перечня к установке (наследие rug)
подтвердить сообщение патча да
проблема при установке/удалении разрешимого элемента, прервать /повтор/игнорировать? прервать это уродливое решение и может быть улучшено в будущем
проблема при загрузке пакета, прервать/повтор/игнорировать? прервать это тоже уродливое решение, оно может быть как-то улучшено в будущем
конфликта зависимостей, #/s/r/c (номер решения, пропустить, повторить или отменить) отменить всегда отменять, взаимодействие с пользователем необходимо для разрешения зависимостей
запрос на изменение носителя прервать
удалить проблематичную блокировку? да

При выводе в XML подсказки отмечаются тэгом <prompt> с атрибутом id. Перечисление всех известных идентификаторов доступно в prompt.h, включая файлы в комплекте с zypper (/usr/include/zypper/prompt.h).


Совместимость с Rug

Синтаксис Zypper похож на Rug, но его команды и набор опций начал отличаться от Rug, также как и его вывод и поведение. Тем не менее, Zypper может работать также в режиме совместимости с rug и поддерживает большинство команд rug. Для получения дополнительной информации см. man zypper, раздел «СОВМЕСТИМОСТЬ С RUG».


См. также