Тонкости работы с Urpmi

Материал из Rosalab Wiki
Версия от 13:41, 24 августа 2023; 716 (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Dialog-warning.png
Предупреждение

Внимание! Начиная с rosa2021.1 вместо urpm используется dnf.

Краткое описание основных функций пакетного менеджера dnf можно найти здесь.


urpmi вне всяких сомнений является одним из наиболее важных инструментов ROSA. С помощью urpmi вы с лёгкостью сможете управлять пакетами. Если вы совладаете с urpmi, вы никогда не будете испытывать «ад зависимостей», на который жалуются многие неопытные пользователи. Например, простая команда urpmi sylpheed установит почтовый клиент Sylpheed, а вместе с ним и все необходимые библиотеки.

Содержание

Где получить дополнительную информацию об urpmi

Urpmi — важный инструмент для всех пользователей ROSA, и он требует какое-то время для изучения. Эта страница даёт обзор наиболее часто используемых параметров. Следующие ресурсы позволяют получить дополнительную информацию об urpmi:

Idea.png
Примечание
на man-страницах можно узнать обо всех параметрах urpmi; страницы руководств — самые актуальные источники информации;

Использование urpmi

Краткий список базовых функций

Вместо xxx часто можно использовать xxx.rpm, тогда операция будет проведена не над пакетом из пакетной базы, а над конкретным пакетом из текущей папки.

Команда Что делает
urpmi --auto-updateвыполняет обновление системы то текущего состояния репозиториев
urpmq -i xxxпоказывает информацию о пакете xxx
urpmq -il xxxпоказывает информацию о пакете xxx и список файлов, которые он устанавливает
urpmq --changelog xxxвыводит журнал изменений пакета
urpmq --whatrequires xxxпоказывает, какие пакеты требуются пакету xxx
urpmf /путь/к/файлукакой пакет установил «файл» в каталог «/путь/к»
urpmi --fuzzy --test xxxпоказывает все rpm, совпадающие со строкой «xxx»
rpm -qf /path/to/fileто же, что и urpmf, но ищет среди установленных пакетов
urpmi.update updatesобновляет локальные данные о доступных пакетах хранилища «updates»
urpmi.update -a обновляет локальные данные о доступных пакетах, принадлежащих ко всем источникам
  
Команда Что делает
urpme xxxудаляет пакет «xxx» (и все пакеты, зависящие от этого пакета)
urpmi --keep xxx.rpm устанавливает пакет «xxx.rpm», содержащийся в текущем каталоге, со всеми зависимостями этого пакета, но если что-нибудь в результате установки должно быть удалено, пакет установлен не будет.
urpmi --update --auto-selectустанавливает доступные обновления с включённых источников
urpmi --test --keep --auto --auto-selectобновить все пакеты с включённых источников, но ничего не устанавливать и не удалять, просто сообщить, что это будет работать
urpmi --keep --auto --auto-selectобновить все пакеты из включённых источников, но ничего не удалять, просто сообщить если что-то не работает
urpmi --auto-selectавтоматически выбрать пакеты, которые можно обновить

Полный список опций urpmi

Это свободное программное обеспечение и может распространяться согласно условиям GNU GPL.

использование:
  --help         - показать эту справку
  --media        - использовать только указанные источники,
                   перечисленные через запятую
  --excludemedia - не использовать указанные источники,
                   перечисленные через запятую
  --update       - использовать только источник обновления
  --searchmedia  - использование только указанных источников для поиска
                   запрошенных пакетов
  --sortmedia    - сортировать источники по подстрокам, перечисленным
                   через запятую.
  --synthesis    - использовать указанный synthesis вместо БД urpmi
  --auto         - неинтерактивный режим; на вопросы даются ответы по умолчанию
  --auto-req     - автоматически делать выбор между несколькими альтернативами.
  --auto-media   - when provided with remote files, try to add media from
                  that files locations.
  --auto-select  - автоматически выбрать пакеты для обновления системы
  --auto-update  - обновить источник, а затем систему
    --no-md5sum    - отключить проверку файла MD5SUM
    --force-key    - принудительно обновить gpg-ключ
  --auto-orphans - удалить сирот без вывода запроса
  --no-auto-req  - при наличии альтернатив, спрашивать пользователя.
  --no-auto-media - when provided with remote files, do not try to add media
                  from that files locations.
  --no-suggests  - не выбирать автоматически рекомендованные пакеты
  --no-uninstall - никогда не предлагать удалять пакет, прерывать установку
  --no-install   - не устанавливать пакеты (только загрузить)
  --keep         - по возможности сохранять существующие пакеты,
                   отклонять запрошенные пакеты, которые приводят к удалению
  --force-req-update  - Обновлять все зависимости пакета.
--no-force-req-update  - Не обновлять зависимости пакета, если они уже установлены.
  --split-level  - разбить на мелкие транзакции, если будут
                   устанавливаться или обновляться дополнительные
                   пакеты кроме указанных, по умолчанию 1
  --split-length - размер мелкой транзакции, по умолчанию 8
  --fuzzy, -y    - поиск на основе нечёткой логики
  --buildrequires - установить требуемые для сборки пакеты
  --install-src  - установить только пакеты с исходными кодами
                   (без бинарных файлов)
  --clean        - перед началом операции удалить rpm-файлы из кэша
  --noclean      - не удалять rpm-файлы из кэша
  --justdb       - обновить базу данных, но не изменять файловую систему
  --downgrade    - сменить версию пакета с текущей установленной на
                   наиболее актуальную раннюю
  --replacepkgs  - принудительно установить уже установленные пакеты
  --force        - принудительно выполнить, даже если некоторые пакеты
                   не существуют
  --allow-nodeps - разрешить устанавливать пакеты без проверки зависимостей
                   после запроса у пользователя
  --allow-force  - разрешить устанавливать пакеты без проверки зависимостей
                   и целостности после запроса у пользователя
  --allow-suggests - автоматически выбирать рекомендованные пакеты
  --parallel     - распределённое выполнение urpmi через машины алиаса
  --root         - использовать другой корень для установки rpm-файла
  --urpmi-root    - использовать другой корень для базы данных urpmi
                   и установки пакетов
  --use-distrib  - настроить urpmi на лету из дерева distrib; полезно
                   для установки в chroot с параметром --root
  --metalink     - сгенерировать и использовать локальные метассылки
  --download-all - download all needed packages before trying to install them
                   (this is the default behavior)
  --no-download-all - скачивать каждый пакет непосредственно перед его установкой
  --downloader   - program to use to retrieve distant files.
                   known programs: wget, curl, prozilla, aria2
  --curl-options - дополнительные параметры, передаваемые в программу curl
  --rsync-options- дополнительные параметры, передаваемые в программу rsync
  --wget-options - дополнительные параметры, передаваемые в программу wget
  --prozilla-options - дополнительные параметры, передаваемые в программу prozilla
  --aria2-options- дополнительные параметры, передаваемые в программу aria2
  --limit-rate   - ограничить скорость загрузки
  --retry-hard   - перезапустить программу скачивания файлов в случае ошибки,
                   выждав время, указанное в опции --download-timeout.
  --download-timeout   - время ожидания перед очередной попыткой запустить программу скачивания файлов
                   (актуальна только при использовании опции --retry-hard). 
  --resume       - возобновить загрузку частично загруженных файлов
                   (--no-resume отключает её; по умолчанию отключена)
  --proxy        - использовать указанный HTTP-прокси; по умолчанию
                   используется порт 1080 (формат - <хост_прокси[:порт]>)
  --proxy-user   - пользователь и пароль для аутентификации на прокси
                   (формат - <пользователь:пароль>)
  --bug          - сохранить отчёт об ошибках в каталог, определённый
                   следующим аргументом
  --env          - использовать особое окружение (обычно отчёт
                   об ошибке)
  --verify-rpm   - проверять подписи rpm перед установкой
                   (--no-verify-rpm отключает её; по умолчанию включена)
  --test         - проверить возможность корректной установки
  --excludepath  - исключить пути, перечисленные через запятую
  --excludedocs  - исключить файлы документации (docs)
  --ignoresize   - не проверять дисковое пространство перед установкой
  --ignorearch   - разрешать устанавливать rpm-файлы для несоответствующих
                   архитектур
  --noscripts    - не выполнять scriptlet'ы пакета
  --notriggers  - не выполнять триггер(ы) пакета
  --nofdigests   - не проверять дайджест файла(ов) 
  --fastunsafe   - меняет надежность и верификацию на скорость. Альяс к:
                   --tune-rpm=nofsync
                   --nofdigests
                   --no-verify-rpm
  --replacefiles - игнорировать конфликты файлов
  --repackage    - повторно упаковывать файлы перед удалением
  --skip         - пакеты, установка которых будет пропущена
  --prefer       - предпочитаемые пакеты
  --more-choices - если найдены разные пакеты, предложить больше
                   вариантов, чем предлагается по умолчанию
  --nolock       - не блокировать базу данных rpm
  --strict-arch  - обновить пакеты только с такой же архитектурой
  -a             - выбрать все совпадения из командной строки
  -p             - разрешить искать пакеты в provides
  -P             - не искать пакеты в provides
  --quiet, -q    - тихий режим (quiet)
  --verbose, -v  - подробный режим
  --debug        - очень подробный режим

urpmi.addmedia

Всё начинается с добавления репозитория (или «хранилища», «зеркала»). Репозиторий можно добавить с помощью программы urpmi.addmedia.

По умолчанию, установленная ROSA Desktop Fresh уже содержит все основные репозитории. Если же вы хотите подключить дополнительный источник (например, кто-то на форуме посоветовал попробовать пакеты из его персонального репозтория на ABF), вы всегда можете сделать это вручную.

urpmi.addmedia имя_источника ftp://ftp.сайт.com/путь/к/ROSA/RPMS

Но удобнее использовать программу с графическим интерфейсом (команда edit-urpm-sources.pl). Эту же программу можно запустить из центра управления ROSA (раздел «Управление программами», пункт «Настройки источников настройки/обновления ПО»).

Для каждой версии ROSA имеются четыре репозитория:

  • main — содержит наиболее важные программы, поддерживаемые ROSA;
  • contrib — содержит дополнительные программы, добавленные участниками сообщества ROSA, но которые не обязательно должны получать обновления по безопасности;
  • non-free — содержит некоторые программы, которые не являются свободными.
  • restricted — содержит программы, которые могут быть запрещены к использованию в некоторых странах, где действуют патенты на программное обеспечение.

Каждый репозиторий подразделяется ещё на 3:

  • release — здесь лежат пакеты в том состоянии, в котором они находились на момент выхода релиза;
  • updates — здесь лежат пакеты, обновлённые со дня выхода релиза. При добавлении хранилища с обновлениями добавьте переключатель --update, чтобы urpmi мог отличить это хранилище от обычных хранилищ;
  • testing — используется для тестирования свежих обновлений, что позволяет участникам, сообщающим об ошибках, проверить корректность обновлений.

Чтобы устанавливать пакеты с зеркала, urpmi необходимо предоставить один из файлов, хранящих в сжатом виде либо минимально необходимый, лиюо полный набор данных о пакетах.

Полный список опций urpmi.addmedia

Использование: urpmi.addmedia [параметры] <название> <url>
где <url> один из:
       [file:/]/<путь>
       ftp://<логин>:<пароль>@<хост>/<путь>
       ftp://<хост>/<путь>
       http://<хост>/<путь>
       cdrom://<путь>

Использование: urpmi.addmedia [параметры] --distrib --mirrorlist <url>
Использование: urpmi.addmedia [параметры] --mirrorlist <url> <название> <относительный путь>

Примеры:

  urpmi.addmedia --distrib --mirrorlist '$MIRRORLIST'
  urpmi.addmedia --mirrorlist '$MIRRORLIST' backports media/main/backports
 urpmi.addmedia --distrib --zeroconf


а [параметры] могут быть следующими
  --help         - показать эту справку
  --wget         - использовать wget для загрузки удалённых файлов
  --curl         - использовать curl для загрузки удалённых файлов
  --prozilla     - использовать prozilla для загрузки удалённых файлов
  --aria2        - использовать aria2 для загрузки удалённых файлов
  --mirrorbrain  - использовать мета-ссылку, созданную на стороне сервера.
  --metalink     - сгенерировать и использовать локальные метассылки
  --limit-rate   - ограничить скорость загрузки
  --proxy        - использовать указанный HTTP-прокси; по умолчанию
                   используется порт 1080 (формат - <хост_прокси[:порт]>)
  --proxy-user   - пользователь и пароль для аутентификации на прокси
                   (формат - <пользователь:пароль>)
  --update       - создать источник обновления или отбросить
                   источники без обновлений (при использовании с --distrib)
  --xml-info     - использовать особую политику для загрузки xml-файлов
                   варианты: never, on-demand, update-only, always. cf urpmi.cfg(5)
  --probe-synthesis - использовать файл synthesis
  --probe-rpms   - использовать rpm-файлы (вместо synthesis-файла)
  --no-probe     - не искать файл synthesis
  --urpmi-root    - использовать другой корень для базы данных urpmi
                   и установки пакетов
  --distrib      - автоматически создать все источники из источника
                   установки
  --interactive  - (вместе с --distrib) ожидать подтверждения для каждого
                   из источников
  --all-media    - (вместе с --distrib) добавить все перечисленные
                   источники
  --virtual      - создать виртуальный источник, который всегда
                   является самым актульным
  --no-md5sum    - отключить проверку файла MD5SUM
  --nopubkey     - не импортировать публичный ключ из добавленного источника
  --raw          - добавить источник в config, но не обновлять его
  -q             - тихий режим (quiet)
  -v             - подробный режим

Восстановление потерянных источников (cds)

Если в списке хранилищ отсутствуют некоторые CD или DVD, то их можно добавить в список с помощью команды:
urpmi.addmedia --distrib cdrom removable://mnt/cdrom
. В момент запуска команды на исполнения в приводе компакт-дисков должен находиться носитель, который нужно добавить в список.
Idea.png
Примечание
Приведённый формат команды соответствует системам, версия которых ниже 2007.1. Все отсоединяемые устройства теперь монтируются в каталоге /media.

Копирование CD в домашний каталог и использование копий в urpmi

Если вам не нравится жонглировать дисками при обновлении системы и у вас есть свободное место, создайте каталог (например: /home/uid/CDS/), скопируйте в этот каталог рекурсивно каталоги base/ и ROSA/ (т. е. вместе со всем содержимым их вложенных подкаталогов) с первого установочного CD. Затем, скопируйте все каталоги, начиная с RPMS2 вплоть до RPMS8, со всех CD/DVD в каталог ROSA/. После извлечения или отключения установочных CD выполните следующую команду от имени суперпользователя root:

urpmi.addmedia --distrib HD file://home/uid/CDS

По окончании копирования выполните следующие команды:

      cd /home/uid/CDS
      genhdlist

Затем, воспользуйтесь менеджером источников. К нему можно получить доступ из центра управления ROSA (центр управления ROSA --> Управление программами --> Настройка источников установки/обновления ПО). Выберите созданный вами каталог и отключите все записи, имеющие отношение к CD.

Другой метод заключается в копировании образов ISO в различные точки монтирования. Подробнее смотри копирование CD на жёсткий диск и последующее их монтирование.

Копирование rpms (включая установочные CD) в отдельный каталог. Использование копии в urpmi

Создайте каталог для хранения всех rpms, например ~/RPMS

Чтобы скопировать сразу «кучу» rpms (с установочных CD, например):

  find /INSTALL_CDS/ -name *.rpm -print -exec cp {} ~/RPMS \;

Если вы скопировали установочные CD на жёсткий диск, или у вас есть их образы ISO на диске (о том, как монтировать образы, смотри копирование CD на жёсткий диск), это можно сделать за один шаг.

В этом примере CD монтируются как /INSTALL_CDS/CD1, /INSTALL_CDS/CD2 и т. д.

  cd ~/RPMS

  genhdlist

Это приведёт к созданию файлов hdlist.cz и sythesis.hdlist.cz, которые основываются на том, что они найдут в каталоге, в котором находятся.

Найдите публичные ключи для rpms и скопируйте их в ~/RPMS/pubkey. Они должны находиться в INSTALL_CDS/CD1/media/media_info:

  mkdir ~/RPMS/pubkey

  cp /INSTALL_CDS/CD1/media/media_info/pubkey* ~/RPMS/pubkey/

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

  urpmi.addmedia local_rpms  file://home/uid/RPMS/
Idea.png
Примечание
Обратите внимание на вкладку «Обсуждение» соответствующей английской статьи.

Добавление источника для дистрибутива

urpmi может добавить источники (т. е. main, updates, contrib ...) с выбранного зеркала с помощью одной-единственной команды. Наберите в командной строке следующую команду от имени суперпользователя:

urpmi.addmedia --distrib ftp://'MIRROR_SITE'/pub/ROSA/official/'VERSION'/'ARCH'

где:

  • 'MIRROR_SITE' действующий URL сервера ftp;
  • 'VERSION' версия вашей системы ROSA, для который вы хотите добавить источник
  • 'ARCH' одна из двух архитектур: i586 или x86_64, или возможно другая, которая существует не для всех версий ROSA (например sparc, pcc и т. д.).

urpmi.update

Команда urpmi.update обновляет список пакетов репозитория. Этот список меняется всякий раз, когда на сервере меняются пакеты. Таким образом, список необходимо обновлять каждый раз, когда вы захотите установить новый пакет с репозитория, в котором возможны изменения среди пакетов, например ROSA Cooker. Если вы пользуетесь репозиторием стабильного релиза, то такой репозиторий обычно не изменяется, поэтому нет необходимости обновлять список пакетов перед установкой какого-либо пакета. Это работает примерно следующим образом:

urpmi.update название_источника

или

urpmi.update -a

Аргумент -a означает "все источники".

Полный список опций urpmi.update:

использование: urpmi.update [параметры] <название> ...
где <название> - название обновляемого источника
  --help         - показать эту справку
  --wget         - использовать wget для загрузки удалённых файлов
  --curl         - использовать curl для загрузки удалённых файлов
  --prozilla     - использовать prozilla для загрузки удалённых файлов
  --aria2        - использовать aria2 для загрузки удалённых файлов
  --metalink     - сгенерировать и использовать локальные метассылки
  --limit-rate   - ограничить скорость загрузки
  --proxy        - использовать указанный HTTP-прокси; по умолчанию
                   используется порт 1080 (формат - <хост_прокси[:порт]>)
  --proxy-user   - пользователь и пароль для аутентификации на прокси
                   (формат - <пользователь:пароль>)
  --update       - обновить только источника с обновлениями
  --no-md5sum    - отключить проверку файла MD5SUM
  --force-key    - принудительно обновить gpg-ключ
  --ignore       - не обновлять, пометить источник как игнорируемый
  --no-ignore    - не обновлять, пометить источник как включённый
  --urpmi-root    - использовать другой корень для базы данных urpmi
                   и установки пакетов
  --probe-rpms   - не использовать файл synthesis; использовать непосредственно rpm-файлы
  -a             - выбрать все включенные несъёмные источники
  -f             - принудительно обновить файл synthesis
  -ff            - беспрекословно обновить файл synthesis
  -q             - тихий режим (quiet)
  -v             - подробный режим

urpmi.removemedia

Если Вы хотите избавиться от репозитория, используйте следующую команду:

urpmi.removemedia nameofmedia

Полный список опций urpmi.removemedia:

использование: urpmi.removemedia (-a | <название> ...)
где <название> - название удаляемого источника.
  --help         - показать эту справку
  -a             - выбрать все источники
  -y             - нечёткое совпадение названий источников
  -q             - тихий режим (quiet)
  -v             - подробный режим
  --urpmi-root    - использовать другой корень для базы данных urpmi
                   и установки пакетов

urpmf

С помощью urpmf можно узнать, к какому пакету принадлежит тот или иной файл, а также посмотреть описание пакета и т. п.

Допустим, что вы хотите скомпилировать программу, написанную на языке программирования C, а компилятор жалуется на отсутствие файла jpeglib.h. Достаточно набрать следующую команду:

urpmf jpeglib.h

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

libjpeg62-devel:/usr/include/jpeglib.h
mozilla-devel:/usr/include/mozilla-1.4a/jpeg/jpeglib.h

Это означает, что заголовочный файл jpeglib.h является частью пакета libjpeg62-devel. Теперь, чтобы его установить, нужно набрать следующую команду:

urpmi libjpeg62-devel

Другой пример. Допустим, что вы хотите установить почтовый клиент, но вы не знаете ни одного почтового клиента для Linux. Вы можете выполнить поиск по описанию пакетов, используя выражения «mail» и «client». Например, команда urpmf --summary mail -a client возвратила следующее:

evolution:Integrated GNOME mail client, calendar and address book.
squirrelmail:Squirrelmail is a webmail client for PHP4.
sylpheed-claws:Enhanced version of the Sylpheed e-mail client
comsat:A mail checker client and comsat mail checking server.
cscmail:CSCMail is a GTK email client written in Perl
sylpheed:A GTK+ based, lightweight, and fast e-mail client
tradeclient:Email Client with PIM features for X

Параметр --summary используется для поиска по описанию. -a означает логическое «И».

Полный список опций urpmf:

Это свободное программное обеспечение и может распространяться согласно условиям GNU GPL.

использование: urpmf [параметры] путь-выражение
  --help         - показать эту справку
  --version      - показать номер версии программы
  --env          - использовать особое окружение (обычно отчёт
                   об ошибке)
  --excludemedia - не использовать указанные источники,
                   перечисленные через запятую
  --literal, -l  - не искать соответствия шаблону, использовать аргумент
                   как буквенную строку
  --urpmi-root    - использовать другой корень для базы данных urpmi
                   и установки пакетов
  --media        - использовать только указанные источники,
                   перечисленные через запятую
  --sortmedia    - сортировать источники по подстрокам, перечисленным
                   через запятую.
  --use-distrib  - использовать указанный путь к источнику
  --synthesis    - использовать указанный synthesis вместо БД urpmi
  --uniq         - не выводить идентичные строки
  --update       - использовать только источник обновления
  --verbose      - подробный режим
  -i             - не учитывать регистр в шаблонах
  -I             - учитывать регистр в шаблонах (по умолчанию)
  -F<str>        - изменить разделитель полей (по умолчанию - ':')
Выражения для шаблонов:
  text           - любой текст считается регулярным выражением,
                   если только не используется -l
  -e             - включить код perl непосредственно как perl -e
  -a             - двоичный оператор AND
  -o             - бинарный оператор OR
  !              - унарный NOT
  ( )            - левая и правая скобки
Список тегов:
  --qf           - выходной формат в стиле printf
                   пример: '%name:%files'
  --arch         - архитектура
  --buildhost    - машина, на которой был собран пакет
  --buildtime    - время сборки
  --conffiles    - конфигурационные файлы
  --conflicts    - конфликтующие теги
  --description  - описание пакета
  --distribution - дистрибутив
  --epoch        - epoch
  --filename     - имя пакета
  --files        - список файлов в пакете
  --group        - группа
  --license      - лицензия
  --name         - имя пакета
  --obsoletes    - теги obsoletes (устаревшие)
  --packager     - создатель пакета
  --provides     - теги provides (предоставляются)
  --requires     - теги requires (требуются)
  --size         - установленный размер
  --sourcerpm    - rpm с исходными кодами
  --suggests     - теги suggests (рекомендуются)
  --summary      - сводка
  --url          - url
  --vendor       - поставщик
  -m             - источник, в котором был найден пакет
  -f             - показать версию, релиз и архитектуру с названием

urpmi

Это — главная команда программы управления пакетами, которая используется для установки пакетов вместе со всеми зависимостями:

urpmi имя_пакета

Например, если вы считаете, что Sylpheed — достойный для установки почтовый клиент, его можно установить с помощью команды: urpmi sylpheed.

Замечание: команда urpmi имя_пакета не обязательно установит последнюю версию пакета. Urpmi сравнивает номер версии установленного пакета с номером версии пакета из включённого источника. Исключение составляет тот факт, что иногда обновление пакета доступно под немного иным названием, обе версии пакета, старая и новая, остаются доступными во включённом источнике. Это делается по причинам обратной совместимости.

Here is a notable example urpmi autoconf will not result in the latest version being installed, for the highest version of that package name is autoconf2.5-2.60.

Вместо этого следует использовать команду urpmi autoconf2.5, которая приведёт к установке последней версии 2.5*.

Idea.png
Примечание

Заметьте, что в вашей системе могут быть установлены 2 версии: ROSA автоматически выберет наиболее подходящую.

Для получения более подробной информации по данному примеру смотри /usr/share/doc/autoconf-2.13/IMPORTANT.README.MDK.

Ниже даётся несколько замечаний об использовании команды urpmq —fuzzy, разъясняющих, как избежать в будущем подобных проблем с версиями.

Ещё один пример использования urpmiобновление системы с помощью последних обновлений по безопасности и баг-фиксам.

urpmi.update updates && urpmi --update --auto-select

В этом примере предполагается, что у urpmi есть источник под названием «updates», который был объявлен при добавлении как «источник обновлений». Поскольку содержимое источника обновлений меняется часто, необходимо периодически проверять наличие новых обновлений с помощью urpmi.update. Символы && означают «если первая команда успешно выполнена, выполнить вторую команду». Во второй команде ключ --update означает «искать только в источниках, заявленных как обновляемые», а ключ --auto-select означает «выбрать доступные обновления для пакетов, установленных в системе». Urpmi выведет список пакетов, доступных для обновления, и спросит разрешения о продолжении своей работы.

Если добавить ключ --auto, все обновляемые пакеты будут обновлены, включая все требуемые зависимости. Если вы предпочитаете использовать графический интерфейс, воспользуйтесь программой rpmdrake из центра управления ROSA: Управление программамиОбновление системы.


urpmi --parallel

В параллельном режиме работы urpmi обновления загружаются на одну из машин, а она в свою очередь раздаёт их остальным компьютерам, входящим в локальную сеть (смотри [1]).

Команда urpmi --parallel установит обновления на всех определённых вами компьютерах. Подробнее смотри man-страницу urpmi (man urpmi), а также [2].

Параллельный режим urpmi работает следующим образом: вы запускаете на выполнение команду urpmi, которая выполняется параллельно на нескольких машинах. Машина, на который вы запустили команду, тестирует результат на каждой машине из группы по очереди, загружает все необходимые пакеты для всех машин группы, предоставляет соответствующие пакеты каждый машине, затем, вызывает urpmi на машине для выполнения актуальной установки. Это отличная идея для быстрой установки программ на всех ваших компьютерах, или даже для поддержания программного обеспечения на всех компьютерах в актуальном состоянии с помощью нескольких команд, кроме того, это позволяет экономно использовать полосу пропускания канала, так как каждый необходимый пакет загружается только один раз. Единственный недостаток в настоящий момент — вы не можете включить сервер в группу, что является недостатком для малых домашних локальных сетей.

Итак, как же этом пользоваться. На самом деле, всё просто. Сначала проверьте, что вы можете достучаться с сервера до каждой клиентской машины через ssh от имени суперпользователя (вы можете ввести идентификационную фразу или пароль, или можно использовать ssh-add для настройки ключей). Итак, надо установить urpmi-parallel-ssh на серверной машине, и исправить файл /etc/urpmi/parallel.cfg, он должен выглядеть примерно таким образом:

local:ssh:toy:htpc

первый параметр — имя группы (оставлено на ваше усмотрение), второй параметр оставьте «ssh». Оставшиеся параметры — имя хостов машин в группе. Их может быть сколько угодно (сервер не должен входить в их список: urpmi просто откажется работать, обнаружив свои lock-файлы).

Далее, вы можете использовать этот файл. На сервере наберите команду:

urpmi --parallel local somepackage

До тех пор, пока urpmi на сервере будет иметь доступ ко всем пакетам, необходимым всем клиентским машинам из своих источников urpmi, всё должно работать гладко. Простейший способ гарантировать это — иметь на всех машинах (на сервере и клиентах) одни и те же источники urpmi.

Кроме того, можно постоянно поддерживать группу машин в актуальном состоянии. Например, чтобы содержать все машины обновлёнными, в домашней сети, которая включает машины zen (сервер), toy и htpc, запустите следующую последовательность команд на zen:

fanout "localhost toy htpc" "urpmi.update -a"

программа fanout запускает одну команду на нескольких машинах одновременно, используя ssh.

urpmi -auto-select -keep -noclean -v

noclean оставляет пакеты на машине zen после установки; это значит, что когда команда parallel будет запущена в следующий раз, она не станет скачивать эти пакеты заново.

urpmi --parallel local -auto-select -keep -v


urpme

urpme — команда, предназначенная для удаления программного обеспечения с компьютера. Также как и urpmi, urpme обрабатывает зависимости и извещает пользователя, что установленное программное обеспечение зависит от того программного обеспечения, которое он собирается удалить. В таком случае, у пользователя есть возможность отменить процедуру удаления или удалить пакет вместе с другими зависящими от него пакетами. Использование:

urpme название_пакета

Например, в системе установлено 2 почтовых клиента: Sylpheed и Evolution. В этом случае, если один из клиентов не используется, его можно удалить. К тому же, таким образом можно освободить немного места на жёстком диске. Чтобы удалить пакет Evolution, воспользуйтесь следующей командой:

urpme evolution

Удаление пакет сирот

Сначала надо сформировать пакеты сироты после удаления программы:

urpme --report-orphans <программа>

Потом надо удали сами осиротевшие (не нужные) пакеты:

urpme --auto-orphans

Полный список опций urpme

Это свободное программное обеспечение и может распространяться согласно условиям GNU GPL.

использование:
  --help         - показать эту справку
  --auto         - автоматически выбрать пакет из предлагаемых
  --auto-orphans - удалить сирот
  --test         - проверить возможность корректного удаления
  --force        - принудительно выполнить, даже если некоторые пакеты
                   не существуют
  --parallel     - распределённое выполнение urpmi через машины алиаса
  --repackage    - повторно упаковывать файлы перед удалением
  --root         - использовать другой корень для удаления rpm-файлов
  --urpmi-root    - использовать другой корень для базы данных urpmi
                   и установки пакетов
  --justdb       - обновить базу данных, но не изменять файловую систему
  --noscripts    - не выполнять scriptlet'ы пакета
  --notriggers  - не выполнять триггер(ы) пакета
--fastunsafe   - меняет надежность и верификацию на скорость. Альяс к:
                   --tune-rpm=nofsync
  --use-distrib  - настроить urpme на лету из дерева distrib; полезно
                   для установки/удаления в/из chroot с параметром --root
  --verbose, -v  - подробный режим
  -a             - выбрать все пакеты, удовлетворяющие выражению
 --report-orphans - вычислять пакеты-сироты после удаления пакетов.

urpmq

urpmq позвляет Вам запрашивать базу данных rpm, благодаря чему Вы можете выяснить информацию о пакетах, установленных Вами, а так же о других вещах в базе данных, например о том, какие у Вас имеются источники установки.

[root@isis root]# urpmq --list-media 
contrib
cooker
plf

Предостережение: Используя urpmq для поиска пакетов, удостоверьтесь, что понимаете разницу между использованием его с опцией --fuzzy и без нее. Вы можете не найти некоторые пакеты, которые Вы искали если не будете осторожными. Если urpmq находит пакет, название которого точно соответствует Вашему запросу, по умолчанию она выводит только название этого пакета, и Вы не увидите других пакетов, которые содержат то же название.

Например:


# Представьте, что Ваш лучший друг рассказал Вам о vegastrike, классной 3D-игре.
[root@localhost augustin]# urpmq vegastrike             
vegastrike                                                
# Круто! Есть пакет ROSA с точно таким именем!
# Но Вы не видите других пакетов, которые содержат то же мя!

# Запросим еще раз: обратите внимание на пропущенную 'e' в конце названия пакета
[root@localhost augustin]# urpmq vegastrik               
No package named vegastrik
The following packages contain vegastrik: vegastrike, vegastrike-data
You should use "-a" to use all of them
# В этот раз результат запроса сильно отличается
# Мы увидели уже не один, а два пакета. 

         #  Сравните следующий запрос с предыдущими двумя
[root@localhost augustin]# urpmq --fuzzy vegastrike  
vegastrike
vegastrike-data
          // Обратите внимание на разницу, которую обеспечивает --fuzzy

urpmq --fuzzy так же очень полезна, когда нужно узнать какие другие доступные версии пакета имеются: иногда новая мажорная версия не предоставляет полной обратной совместимости. По этой причине, новая версия может распространяться под немного другим именем пакета. Сейчас, Вы уверены, что не пропустите ничего.

Например:

[root@localhost augustin]# urpmi mplayer
   #Это не установит последнюю версию проигрывателя
[root@localhost augustin]# urpmq --fuzzy mplayer
The following packages contain mplayer:
kmplayer
mplayer
mplayer-fonts
mplayer-gui
mplayer-skins
mplayer1.0
mplayer1.0-gui
mplayerplugin
transcode
xmms-mplayer
 # Видите! Новый релиз 1.0 распространяется под другим названием 
 # Вы предупреждены!

Полный список опций urpmq:

Это свободное программное обеспечение и может распространяться согласно условиям GNU GPL.

использование:
  --help         - показать эту справку
  --update       - использовать только источник обновления
  --media        - использовать только указанные источники,
                   перечисленные через запятую
  --searchmedia  - использовать только указанные источники для поиска
                   запрошенных (или обновляемых) пакетов
  --excludemedia - не использовать указанные источники,
                   перечисленные через запятую
  --sortmedia    - сортировать источники по подстрокам, перечисленным
                   через запятую.
  --synthesis    - использовать указанный synthesis вместо БД urpmi
  --auto-select  - автоматически выбрать пакеты для обновления системы
  --auto-orphans - показать список сирот
  --not-available
                 - выводит список установленных пакетов, не доступных ни в одном источнике.
  --no-suggests  - не выбирать автоматически рекомендованные пакеты
  --fuzzy        - поиск на основе нечёткой логики (эквивалент -y)
  --keep         - по возможности сохранять существующие пакеты,
                   отклонять запрошенные пакеты, которые приводят к удалению
  --list         - показать список доступных пакетов
  --list-media   - показать список доступных источников
  --list-url     - показать список доступных источников и их url
  --list-nodes   - показать список доступных узлов при использовании --parallel
  --list-aliases - показать список доступных алиасов parallel
  --dump-config  - показать конфигурацию в виде аргумента для urpmi.addmedia
  --src          - следующий пакет содержит исходные коды (эквивалент -s)
  --sources      - показать URL исходных кодов выбранных пакетов
  --force        - принудительно выполнить, даже если некоторые пакеты
                   не существуют
  --ignorearch   - разрешить запрашивать rpm-файлы для несоответствующих архитектур
  --parallel     - распределённое выполнение urpmi через машины алиаса
  --root         - использовать другой корень для установки rpm-файла
  --urpmi-root    - использовать другой корень для базы данных urpmi
                   и установки пакетов
  --use-distrib  - настроить urpmi на лету из дерева distrib.
                   Параметр позволяет опросить дерево дистрибутива.
  --wget         - использовать wget для загрузки удалённых файлов
  --curl         - использовать curl для загрузки удалённых файлов
  --prozilla     - использовать prozilla для загрузки удалённых файлов
  --proxy        - использовать указанный HTTP-прокси; по умолчанию
                   используется порт 1080 (формат - <хост_прокси[:порт]>)
  --proxy-user   - пользователь и пароль для аутентификации на прокси
                   (формат - <пользователь:пароль>)
  --env          - использовать особое окружение (обычно отчёт
                   об ошибке)
  --changelog    - показать журнал изменений
  --conflicts    - показать конфликты
  --obsoletes    - показать устаревшие файлы
  --provides     - показать предоставляемые файлы
  --requires     - показать требуемые файлы
  --suggests     - показать рекомендуемые файлы
  --sourcerpm    - показать исходный rpm-пакет
  --summary, -S  - показать сводку
  --verbose, -v  - подробный режим
  --requires-recursive, -d
                   - опросить зависимости пакета
  --whatrequires - реверсивный поиск требуемых для пакета файлов
  --whatrequires-recursive
                   - расширенный реверсивный поиск (включая виртуальные пакеты)
  --whatprovides, -p
                   - поиск в provides для поиска пакетов
  -a             - выбрать все совпадения из командной строки
  -c             - показать все данные для удаляемого пакета
  --evrd         - print epoch, version, release and distepoch.
  -f             - показать версию, релиз и архитектуру с названием
  -g             - показать группы с названиями
  -i             - показать информацию в удобной для чтения форме
  -l             - показать список файлов в пакете
  -m             - эквивалент -du
  -r             - показать версию и релиз с названием
  -s             - следующий пакет содержит исходные коды (эквивалент --src)
  -u             - удалить пакет, если уже установлена более новая версия
  -y             - поиск на основе нечёткой логики
                   (эквивалент --fuzzy)
  -Y             - эквивалент -y, но без учёта регистра


gurpmi

gurpmi — графический фронт-энд для программы urpmi. Может использоваться из командной строки для установки и поиска пакетов. Используется программой rpmdrake для отображения сообщений о необходимости выполнения некоторых действий со стороны пользователя.

rpmdrake

Для тех же задач ROSA предлагает набор графических инструментов. Подробнее см. Rpmdrake.

smart

Пакеты smart, smart-update и smart-gui, первоначально использовавшиеся фирмой Conectiva, представляют собой инструменты, основанные на языке программирования Python. Пакеты доступны в contrib. Эти инструменты отличаются высокой скоростью работы, достаточной надёжностью, а также имеют некоторые преимущества перед оригинальными инструментами ROSA. Официально не поддерживаются. Домашняя страница: Smart Home. На данный момент доступны во многих других дистрибутивах.

Вопросы безопасности

Проблемы безопасности

Чтобы программа urpmi могла устанавливать пакеты, она должна быть запущена с привилегиями суперпользователя. Хитрый злоумышленник может обмануть пользователя, подсунув ему пакет для установки. Такие пакеты на первый взгляд выглядят как обычные пакеты, которыми регулярно пользуются множество пользователей, но в данном случае опасность заключается в том, что этот пакет может содержать программу-троян или какой-либо другой вредоносный код. Как только пакет будет установлен в системе, приложение может выпустить в систему какой-нибудь вирус, червя или даже программу-шпиона... До настоящего времени нам неизвестно о попытках использования таких эксплоитов, но в ближайшие несколько лет, когда GNU/Linux получит более широкое распространение, возможно, кто-то захочет попытаться это претворить в жизнь. К счастью, таких людей ждёт неудача, потому что внимание, уделяемое безопасности, всегда было неотъемлимой частью Linux-сообщества. Большинство пакетов имеют подпись, которая подтверждает подлинность пакета. Подробнее см. GnuPG.

Злоумышленник может попытаться внедрить вредоносную программу в пакет. Перед установкой urpmi проверит целостность пакета, используя хэш-код MD5, и включённый в пакет ключ gpg. Подробнее см. соответствующий раздел.

Иногда при работе с urpmi могут быть получены следующие строки:

rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format
rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format
rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format
rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format
rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format

rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format
rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format
rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format

Непонятно, в чём же здесь проблема: может быть файл был повреждён во время обновления, а может, процесс urpmi был принудительно завершён нетерпеливым пользователем.

Решение проблемы: удалить файл /var/lib/rpm/Pubkeys, повторно импортировать открытые ключи. См. GnuPG.

Хэширование MD5

Хэш MD5 представляет собой код, включённый в rpm-пакет. Этот код позволяет urpmi проверить хэш пакета. Если по каким-либо причинам файл был повреждён, rpm и urpmi откажутся его устанавливать.

Пример:

[root@localhost augustin]# urpmi kdesdk
rpmdb: /var/lib/rpm/Pubkeys: unexpected file type or format
error: cannot open Pubkeys index using db3 - Invalid 
argument (22)
The following packages have bad signatures:
/var/cache/urpmi/rpms/kdesdk-3.1.3-9mdk.i586.rpm: Invalid 
signature ((SHA1) DSA sha1 MD5 GPG GPG#70771ff3 NOT OK)
Do you want to continue installation ? (y/N) y
installing /var/cache/urpmi/rpms/kdesdk-3.1.3-9mdk.i586.rpm
error: /var/cache/urpmi/rpms/kdesdk-3.1.3-9mdk.i586.rpm: MD5 
digest: BAD Expected(97f2ba5a91888cd3af40f89be6b65868) != 
(393221db35071aa90eaa73816a9a5ba8)
unable to install package 
/var/cache/urpmi/rpms/kdesdk-3.1.3-9mdk.i586.rpm

В данном случае было получено два уведомления Invalid signature ((SHA1) DSA sha1 MD5 GPG GPG#70771ff3 NOT OK) и MD5 digest: BAD Expected(97f2ba5a91888cd3af40f89be6b65868) != (393221db35071aa90eaa73816a9a5ba8). Файл kdesdk-3.1.3-9mdk.i586.rpm повреждён и установлен не будет.

Решение: удалить файл из /var/cache/urpmi/rpms/ и скачать его заново. Попытаться ещё раз установить его с помощью urpmi или rpm --import <filename>

Если это не помогло, значит используемое зеркало содержит повреждённый файл. Попытайтесь скачать файл вручную с двух-трёх других зеркал и сохранить его в каталоге /var/cache/urpmi/rpms/. Всегда удаляйте вручную предыдущий скачанный файл перед последующей попыткой использования другого зеркала. Затем, установите его снова с помощью urpmi.

Если после нескольких попыток будет возникать одна и та же проблема, возможно, что повреждённый файл попал на каждый ftp-сервер. Обратитесь в форум или список рассылки, возможно, что другие пользователи также столкнулись с этой проблемой. В таком случае, скорее всего новый файл появится в ближайшее время.

Решение проблем

База данных RPM заблокирована

От имени суперпользователя можно ввести:

killall urpmi urpmi.update urpme rpm urpmi.addmedia
rm -f /var/lib/urpmi/.LOCK /var/lib/rpm/.RPMLOCK

Если это не разблокирует базу, можно перезагрузить систему.

С другой стороны, такое использование программы killall повышает риск повреждения базы данных RPM, так как вы не позволяете программам, работающим с базой, завершить свою работу. Поэтому будьте осторожны, используя данный приём.

Пересборка базы данных

Может статься, что база rpm-пакетов поломалась. В таком случае, вы можете получить сообщение, что не установленный пакет уже установлен или наоборот. Чтобы исправить, воспользуйтесь командами:

rm -rf /var/lib/rpm/__db*
rpm --rebuilddb

* Неплохой идеей может быть периодической резервное копирование директории /var/lib/rpm. В этом случае вы всегда сможете вернуть предыдущую рабочую версию такими командами:

rpm -ivh --justdb --noscripts --notriggers

Idea.png
Примечание
В современном rpm5, опция rebuilddb устарела. Для восстановления базы, необходимо использовать соответствующую утилиту db_recover из berkleydb внутри директории /var/lib/rpm. Например, если в системе используется libdb-5.1, то команда будет выглядеть следующим образом: cd /var/lib/rpm && db51_recover -ev

Ошибка "medium contrib uses an invalid list"

rm /var/lib/urpmi/list.contrib

Эта команда устранит ошибку, не влияя на установку пакетов.

RPM package verification

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

rpm -Va

Эта команда сообщит вам, какие пакеты изменились с момента установки. Она покажет все несоответствия установленных в системе файлов тому, что должно быть, согласно базе urpmi. При непредвиденном отключении питания, зависании системы и других форс-мажорных обстоятельствах (и человеческом факторе) некоторые файлы могут повредиться или исчезнуть. Узнав, какие пакеты повреждены, вы можете переустановить их и исправить работу системы. Таким образом можно восстановить работоспособность даже незагружающейся системы, войдя в неё при помощи какого-нибудь Live-CD. Для переустановки пакетов используйте команду

urpmi --replacepkgs пакет_1 пакет_2 …

Для проверки одного пакета используйте команду rpm -V имя_пакета (достаточно только имени пакета).

Для проверки контрольной суммы пакета (md5sum), хэша и цифровой подписи gpg:

rpm -K foo.123.rpm

или

rpm -K foo*

Обновление до последней версии Росы с помощью urpmi

Urpmi также может быть использован для обновления вышей машины до более новой версии Росы. Для этого необходимо добавить репозитории с новыми пакетами и запустить urpmi --auto-update.

Другие возможности urpmi

Установка пакета из сети и из локального файла

urpmi может быть использован для установки локальных файлов rpm с разрешением всех зависимостей. Например, если вы собрали новую версию пакета foo-1.0-1bar.rpm, вы можете его установить в систему с помощью urpmi foo-1.0-1bar.rpm. Более того, в качестве аргумента можно задать ссылку на http или ftp сервер (и даже ssh, при условии, что и на сервере, и на клиенте установлен rsync).

Получение списка зависимостей перед установкой

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

  • urpmq -d выведет список всех пакетов, которые необходимы для установки заданного rpm.
  • используйте опцию -m для вывода только тех пакетов, которые еще не установлены в системе.
  • --sources выведет ссылки, с которых будут скачаны необходимые пакеты.

Таким образом, команда urpmq -d -m --sources выведет вам список ссылок на пакеты, которые необходимо доустановить в систему. Такой список полезен, если у вас плохое соединение с Интернет и вы хотите скачать пакеты где-то в другом месте.

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

С помощью urpmq -i вы можете получить детальную информацию о пакете из репозитория. Попробуйте urpmq -i bash.

Установка ПО не в формате RPM

По возможности, для установки ПО вы должны использовать RPM-пакеты из репозиториев ROSA. Мы уверены, что наши репозитории содержат все необходимое для большинства пользователей. Тем не менее, иногда возникает необходимость поставить программу, отсутствующую в репозитории.

Старайтесь не устанавливать ПО в обход базы данных RPM. Также не устанавливайте пакеты при помощи rpm --nodeps; мы не можем гарантировать, что установленное таким образом ПО будет корректно функционировать и не сломает систему.

Компилирование исходных кодов

Вместо уже знакомой тройки команд:

./configure
make
make install

используйте checkinstall:

./configure
make
checkinstall

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

rpmbuild -tb ballname.tar.gz

Установка двоичных пакетов

Такие программы должны находиться в каталоге /usr/local. Этот каталог предназначен для хранения неофициальных пакетов.

Проприетарные драйвера

Все проприетарные драйвера находятся в хранилище non-free.

Пересборка RPMS

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

Копирование CD/DVD на жёсткий диск и их последующее монтирование

Если вам не нравится постоянно менять носители в приводе, вы можете сохранить образы носителей на жёстком диске, настроив urpmi на использование образов носителей вместо физических носителей.

Сначала, создайте каталог для образов ISO носителей:

mkdir ~/iso

Скопируйте все носители в соответствующие каталоги:

dd if=/dev/cdrom of=~/iso/cd1
dd if=/dev/cdrom of=~/iso/cd2
dd if=/dev/cdrom of=~/iso/cd3
...

От имени суперпользователя создайте точки монтирования для каждого носителя:

mkdir /mnt/cd1
mkdir /mnt/cd2
mkdir /mnt/cd3
...

Смонтируйте носители с помощью команд:

mount -t iso9660 -o loop /home/uid/iso/cd1 /mnt/cd1
mount -t iso9660 -o loop /home/uid/iso/cd2 /mnt/cd2
mount -t iso9660 -o loop /home/uid/iso/cd3 /mnt/cd3
...

Внесите изменения в файл /etc/urpmi/urpmi.cfg.

Пример исходного файла:

    Installation\ CD\ 1\ (cdrom1) removable://mnt/cdrom/media/main {
      hdlist: hdlist.Installation CD 1 (cdrom1).cz
      key-ids: 70771ff3
      removable: /dev/hdc
      with_hdlist: ../../media/media_info/hdlist1.cz
    }

Изменённый файл:

    Installation\ CD\ 1\ (cdrom1) file://mnt/cd1/media/main {
      hdlist: hdlist.Installation CD 1 (cdrom1).cz
      key-ids: 70771ff3
      with_hdlist: ../../media/media_info/hdlist1.cz
    }

Другими словами, измените removable://mnt/cdrom на file://mnt/cd1 для каждого носителя cd1, cd2, cd3 и т. д. Также удалите строки, содержащие запись removable:

    removable: /dev/hdc