вівторок, 22 лютого 2011 р.

urpmi. Краткое руководство пользователя

Давным-давно, когда еще весь цивилизованный мир не знал про пакетные менеджеры, установка ПО в Linux была длительная и мучительная. Представьте себе, как только не матюкались пользователи, особенно не опытные, когда пытаешься ставить один пакет, но он этого не хочет, ибо сначала нужно поставить второй пакет. Ставишь второй — он требует в зависимостях третьего, третий четвертого и так далее. И каждый пакет нужно было искать вручную, часто в интернете, тогда еще ооооочень медленном. Десятки нерешенных зависимостей заставили разработчиков задуматься: «А не написать ли нам такую программу, которая сама решает что ставить, как и куда?». И в светлейших головах хороших людей родился первый пакетный менеджер. От человека требовалось всего лишь знать название нужного пакета, доступ к хранилищу пакетов (репозиторию) и права для самой установки. С тех пор основные принципы
не изменились, но сами они значительно обросли новыми функциями, невероятной мощью и гибкостью. На сегодня самые популярные это: 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-пакеты, указав их расположение. Как вы уже догадались, все зависимости решаются, в отличии от обычной 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]$
Удаление пакетов — urpme [имя_пакета].
Удаление также не сложно. Принцип работы такой же, как и в 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 ~]$
И удалять можно сразу несколько источников.

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
P.S. Учите консольные команды. У меня один раз в самый ответственный момент rpmdrake просто рухнул и до сих пор не запускается. И где гарантия того, что это с вами не случится? Если изложенной мной информации вам мало, то просто запустите любую команду без параметров и получите хорошее, толковое руководство. Благо оно локализирована и легкая для понимания. И вы поймете, насколько мощным инструментом наградили разработчики мандриву!


0 коментарі:

Дописати коментар