Давным-давно, когда еще весь цивилизованный мир не знал про пакетные менеджеры, установка ПО в Linux была длительная и мучительная. Представьте себе, как только не матюкались пользователи, особенно не опытные, когда пытаешься ставить один пакет, но он этого не хочет, ибо сначала нужно поставить второй пакет. Ставишь второй — он требует в зависимостях третьего, третий четвертого и так далее. И каждый пакет нужно было искать вручную, часто в интернете, тогда еще ооооочень медленном. Десятки нерешенных зависимостей заставили разработчиков задуматься: «А не написать ли нам такую программу, которая сама решает что ставить, как и куда?». И в светлейших головах хороших людей родился первый пакетный менеджер. От человека требовалось всего лишь знать название нужного пакета, доступ к хранилищу пакетов (репозиторию) и права для самой установки. С тех пор основные принципы
не изменились, но сами они значительно обросли новыми функциями, невероятной мощью и гибкостью. На сегодня самые популярные это: yum, urpmi — ставят пакеты rpm; apt — ставят в основном deb-пакеты, но иногда к ней прикручивают rpm. Сегодня я хочу немного рассказать про менеджер urpmi, который используется в любимой мной Mandriva Linux. Команда rpm предоставляет нам очень большие возможности работы с пакетами, но самая большая проблема в том, что она сама не умеет ставить зависимости. Для решения этой проблемы в недрах компании Mandriva был разработан программный комплект urpmi, который работает поверх стандартной rpm как оболочка. В состав пакета входят несколько утилит для работы с пакетами и их источниками. Ниже мы подробно рассмотрим работу каждого составляющего.
Инсталляция пакетов — urpmi [имя_пакета].
Для установки пакета, как я уже говорил, нужно знать его название. Для примера попробуем поставить программу для создания меню DVD-дисков
Как видим, программа подробно информирует нас о том, что будет делать. Для обеспечения работы нашего пакета требуется еще три дополнительных. Если нас все устраивает, то отвечаем на запрос положительно, нажимая клавишу «у» и пакеты установятся. Можно таким же образом устанавливать одиночные rpm-пакеты, указав их расположение. Как вы уже догадались, все зависимости решаются, в отличии от обычной
Удаление пакетов — urpme [имя_пакета].
Удаление также не сложно. Принцип работы такой же, как и в urpmi, только результат обратный. Для примера давайте удалим пакет
Как бы тоже не очень сложно. Но тут иногда нужно быть осторожным, иначе по тем же зависимостям можно снести пол-системы. Для ясности попробуем удалить пакет
Программа не дура, она знает, что без главных библиотек среды
Поиск пакетов — urpmq [имя_пакета].
Поиск в БД пакетов происходит по таким критериям: по названию пакета (
Добавление источников пакетов — urpmi.addmedia [название_источника] [путь]. Эта команда позволяет добавлять новые репозитории для установки пакетов. Добавлять можно как локальные носители, так и сетевые. Для просмотра уже добавленых можно воспользоваться этой документированной командой:
У меня на данный момент подключено аж три источника — это для примера, на самом деле их больше. Хотя есть еще один, более хитрый способ получить этот список:
Как вы уже могли догадаться, каждый добавленный носитель предоставляет собой папку в директории
После добавления желательно обновить центральную БД пакетов командой
Удаление источников — urpmi.removemedia [название_источника] [путь].
Принцип действия обратно пропорциональный предыдущей команде, и синтаксис похож. Поэтому долго зацикливаться на этом не буду, просто приведу пример:
Rpmdrake. Это официальная «морда» для urpmi, написанная на связке
В завершение приведу русифицированную табличку, которую я бессовестно стащил с сайта http://distrowatch.com/. В ней можно найти основную информацию о командах и их применении. А также используйте ее как словарь-переводчик с других пакетных менеджеров.
P.S. Учите консольные команды. У меня один раз в самый ответственный момент
не изменились, но сами они значительно обросли новыми функциями, невероятной мощью и гибкостью. На сегодня самые популярные это: yum, urpmi — ставят пакеты rpm; apt — ставят в основном deb-пакеты, но иногда к ней прикручивают rpm. Сегодня я хочу немного рассказать про менеджер urpmi, который используется в любимой мной Mandriva Linux. Команда rpm предоставляет нам очень большие возможности работы с пакетами, но самая большая проблема в том, что она сама не умеет ставить зависимости. Для решения этой проблемы в недрах компании Mandriva был разработан программный комплект urpmi, который работает поверх стандартной rpm как оболочка. В состав пакета входят несколько утилит для работы с пакетами и их источниками. Ниже мы подробно рассмотрим работу каждого составляющего.
Инсталляция пакетов — urpmi [имя_пакета].
Для установки пакета, как я уже говорил, нужно знать его название. Для примера попробуем поставить программу для создания меню DVD-дисков
2mandvd
: [root'0'@mandrivka keed]$ urpmi 2mandvd
Наступні пакунки буде встановлено для задоволення залежностей:
Пакунок Версія Випуск Арх.
(носій «Contrib media»)
2mandvd 1.3.3 4mdv2010.1 i586
dvdauthor 0.6.18 1mdv2010.1 i586
ffmpegthumbnailer 2.0.1 1mdv2010.1 i586
libffmpegthumbnailer4 2.0.1 1mdv2010.1 i586
Буде використано 4.7МБ додаткового місця на диску.
Буде отримано 2.4МБ пакунків.
Продовжити встановлення 4 пакунків? (Y/n) (Т/н)
rpm -Uvh [package.rpm]
. Установим таким образом программу для чистки ненужных эскизов — clean:[root'0'@mandrivka keed]$ urpmi ~/clean-0.2-1.noarch.rpm'
встановлюється clean-0.2-1.noarch.rpm з /home/keed/
Підготовка... #############################################
1/1: clean #############################################
[root'0'@mandrivka keed]$
Удаление также не сложно. Принцип работы такой же, как и в urpmi, только результат обратный. Для примера давайте удалим пакет
clean
, который мы установили минутой раньше: [root'0'@mandrivka keed]$ urpme clean
вилучається clean-0.2-1.i586
вилучається пакунок clean-1:0.2-1.i586
[root'0'@mandrivka keed]$
libgnome-desktop-2_17
, к которому много чего привязано:[root'0'@linux.local keed]$ urpme libgnome-desktop-2_17
Щоб задовольнити залежності, буде вилучено 23 пакунків (170МБ):
eog-2.30.1-1mdv2010.1.i586
(через відсутність libgnome-desktop-2.so.17)
evolution-2.30.2-1mdv2010.1.i586
(через відсутність libgnome-desktop-2.so.17)
gdm-2.30.2-12mdv2010.1.i586
(через відсутність gnome-settings-daemon)
gnome-applets-2.30.0-1mdv2010.1.i586
(через відсутність libgnome-desktop-2.so.17,
через відсутність gnome-python-applet)
gnome-control-center-2.30.1-5mdv2010.1.i586
(через відсутність libgnome-desktop-2.so.17,
через незадоволеність gnome-settings-daemon >= 2.21.5,
через відсутність libgnome-window-settings.so.1)
gnome-panel-2.30.2-1mdv2010.1.i586
(через відсутність libgnome-desktop-2.so.17,
через відсутність gnome-screensaver,
через відсутність gnome-session)
[ *=*=*= урезано для экономии места =*=*=* ]
Вилучити 23 пакунки? (Т/н)
GNOME
аж 23 пакета не смогут работать и будут просто занимать такое ценное место на диске. Поэтому и их удалить — это все-таки мудрое решение. Но мы нажимаем «n» для отмены.Поиск пакетов — urpmq [имя_пакета].
Поиск в БД пакетов происходит по таким критериям: по названию пакета (
urpmq [имя_пакета]
), по файлу в нем содержащегося (urpmf [имя_файла]
) и в описании пакетов по ключевым словам (urpmq --fuzzy [ключевое_слово]
). Последние два пункта требуют в наличии закэшированого файла xml-info
, который должен находиться в папке с подключенным репозиторием. Где это, смотрите ниже.Добавление источников пакетов — urpmi.addmedia [название_источника] [путь]. Эта команда позволяет добавлять новые репозитории для установки пакетов. Добавлять можно как локальные носители, так и сетевые. Для просмотра уже добавленых можно воспользоваться этой документированной командой:
[root'0'@mandrivka ~]$ urpmq --list-media
Main media
Contrib media
distrib
[root'0'@mandrivka ~]$ find /var/lib/urpmi/ -type d
/var/lib/urpmi/
/var/lib/urpmi/Main media
/var/lib/urpmi/distrib
/var/lib/urpmi/Contrib media
/var/lib/urpmi/
, в которой лежит список пакетов, место, где эти пакеты брать и MD5-суммы для проверки целостности. Так давайте добавим источник с названием Contrib local media из локального cdrom:[root'0'@mandrivka ~]$ urpmi.addmedia Contrib\ local\ media cdrom://i586/media/contrib
додавання носія "Contrib local media"
[root'0'@mandrivka ~]$
urpmi.update -a
. Только после этого действия пакеты с новых источников станут видимыми и доступными для установки.Удаление источников — urpmi.removemedia [название_источника] [путь].
Принцип действия обратно пропорциональный предыдущей команде, и синтаксис похож. Поэтому долго зацикливаться на этом не буду, просто приведу пример:
[keed'0'@mandrivka ~]$ sudo urpmi.removemedia "Contrib local media"
вилучається носій "Contrib local media"
[keed'0'@mandrivka ~]$
И удалять можно сразу несколько источников.вилучається носій "Contrib local media"
[keed'0'@mandrivka ~]$
Rpmdrake. Это официальная «морда» для urpmi, написанная на связке
perl+gtk
. Довольно удобная оболочка, но по-моему еще не так функциональна, как, например, synaptic
. Пакеты удобно собраны в группы и отображаются в левой колонке. Правая же колонка горизонтально поделена на две части. В верхней выбираем интересующий нас пакет, а снизу читаем информацию про него. Запутаться трудно, но возможно — я один раз долго не мог понять, почему rpmdrake никак не находил mplayer. А дело было в том, что сразу после установки системы он настроен на отображение пакетов с GUI. Просто в спадающем списке над левой колонкой выбираем «Все» и будет вам счастье :)В завершение приведу русифицированную табличку, которую я бессовестно стащил с сайта http://distrowatch.com/. В ней можно найти основную информацию о командах и их применении. А также используйте ее как словарь-переводчик с других пакетных менеджеров.
Задача | Пакетный менеджер | |||
apt (deb) Debian, Ubuntu | zypp (rpm) openSUSE | yum (rpm) Fedora, CentOS | urpmi (rpm) Mandriva | |
---|---|---|---|---|
Управление пакетами | ||||
Установить пакет с репозитория | apt-get install pkg | zypper install pkg | yum install pkg | urpmi pkg |
Установить ПО с файла | dpkg -i pkg | zypper install pkg | yum localinstall pkg | urpmi pkg |
Обновить версию ПО | apt-get install pkg | zypper update -t package pkg | yum update pkg | urpmi pkg |
Удалить ненужное ПО | apt-get remove pkg | zypper remove pkg | yum erase pkg | urpme pkg |
Обновить список пакетов | apt-get update aptitude update | zypper refresh | yum check-update | urpmi.update -a |
Обновить систему | apt-get upgrade aptitude safe-upgrade | zypper update | yum update | urpmi --auto-select |
Поиск в БД пакетов | ||||
Поиск пакета по имени | apt-cache search pkg | zypper search pkg | yum list pkg | urpmq pkg |
Поиск по содержимому | apt-cache search pattern | zypper search -t pattern pattern | yum search pattern | urpmq --fuzzy pkg |
Поиск по файлу | apt-file search path | zypper wp file | yum provides file | urpmf file |
Список установленных пакетов | dpkg -l | zypper search -is | rpm -qa | rpm -qa |
Работа с репозиториями | ||||
Вывести список | cat /etc/apt/sources.list | zypper repos | yum repolist | urpmq --list-media |
Добавить источник | (edit /etc/apt/sources.list) | zypper addrepo path name | (add repo to /etc/yum.repos.d/) | urpmi.addmedia name path |
Удалить источник | (edit /etc/apt/sources.list) | zypper removerepo name | (remove repo from /etc/yum.repos.d/) | urpmi.removemedia media |
rpmdrake
просто рухнул и до сих пор не запускается. И где гарантия того, что это с вами не случится? Если изложенной мной информации вам мало, то просто запустите любую команду без параметров и получите хорошее, толковое руководство. Благо оно локализирована и легкая для понимания. И вы поймете, насколько мощным инструментом наградили разработчики мандриву!