Пропустить навигацию.
Главная

О работе с пакетами в Мандриве

Хорошая статья.
Взял здесь.


Данная статья посвящена такой теме, как работа с пакетами и репозиториями в Мандриве. Как-то так получилось, что эта тема не слишком-то освещена в имеющейся литературе. Про Дебиан с его APT'ом знают все, а по поводу Мандривы некоторые даже всерьёз думают, что никаких репозиториев там и вовсе нету. Поэтому я постараюсь вкратце описать некоторые основные моменты, касающиеся репозиториев и работы с ними.

1. Терминология
Для начала, для тех, кто только начал пользоваться линуксом, нужно пояснить некоторые часто используемые термины.
Основным способом распространения программ в большинстве дистрибутивов являются т. н. «пакеты». Пакет это архив с программой и всеми сопутствующими файлами (документацией, файлами настройки), запакованный таким образом, что при распаковке каждый файл идёт в своё место: программные файлы, как правило, в /usr/bin/, настроечные в /etc и т. д. Помимо этого, в пакетах содержится некоторая дополнительная информация, в частности, название и описание пакета, зависимости и т. п., а также скрипты, которые могут выполняться до или после установки пакета. Поэтому для корректной обработки таких пакетов требуются специальные программы, которые так и называются менеджеры пакетов. Существуют несколько форматов пакетов, в Мандриве используется формат rpm (Red Hat Packet Manager).
Что касается репозиториев, то этим словом называются обычно хранилища пакетов, предназначенных для какого-либо дистрибутива (в русифицированной версии Мандривы они называются также словом «источники»). Частным случаем репозитория можно считать установочный компакт-диск (диски), содержащий, помимо установщика, какую-то часть основного репозитория. Ту часть, которая разработчикам данного дистрибутива показалась наиболее важной. Гораздо большее количество пакетов можно обычно найти в интернете, где они выложены в соответствии со вполне определённой файловой структурой, помогающей менеджеру пакетов найти нужный пакет.

2. Типы репозиториев
Обычно у каждого дистрибутива есть несколько типов, или категорий репозиториев, различающихся по тому или иному признаку: открытости исходников, поддержке производителем и т. п. Есть такое разделение и у репозиториев Мандривы. Чтобы не повторять уже написанного, я просто дам перевод описания репозиториев из Википедии Мандривы.
(Примечания к переводу: Для термина media я сохранил перевод «источник», как уже использовавшийся в русских переводах интерфейса Мандривы. Слово maintainer, не будь рядом слова support, можно было бы перевести, как «поддержка», а так пришлось использовать кальку с английского: «мейнтейнер». Слово contributor я перевёл, как «вкладчик». Знаю, что плохо, но других вариантов в голову не приходит. В любом случае, понимать это слово следует буквально: «человек, вносящий вклад в развитие мандривы»)

/main/release
Описание. Источник /main/release является основным хранилищем, содержащим все поддерживаемые пакеты, вышедшие вместе с дистрибутивом. Добавьте этот источник, чтобы получить доступ ко всему объёму поддерживаемых пакетов, помимо тех, что уже имеются на вашем установочном диске (дисках).
Доступность. Этот источник доступен на всех публичных зеркалах Мандривы.
Поддержка. Пакеты из этого источника поддерживаются Мандривой.
Мейнтейнер. Этот источник контролируется исключительно сотрудниками Инженерного Департамента Мандривы. Он составляется из пакетов проекта Cooker* и после выхода официального релиза полностью замораживается. Никакие изменения или обновления в этот источник не допускаются, они все идут в /main/updates.
* Cooker'ом называется самая последняя на текущий момент версия Мандривы, находящаяся в стадии тестирования. На базе Cooker'а формируется затем очередной релиз. прим. vicza

/main/testing
Описание. Источник /main/testing используется для помещения туда обновлений, вышедших после релиза и до того, как они были официально проверены и выпущены. Подключайте этот источник, если вы хотите помочь в тестировании обновлений. Мы не рекомендуем использовать этот источник на ответственных системах, или если вы не готовы столкнуться с решением возможных проблем, связанных с этими обновлениями. Пожалуйста, при обнаружении таких проблем отравляйте баг-репорты о них, используя сервис Bugzilla. Заметьте, что этот источник не предназначен для тестирования пакетов, которые предполагается поместить в /main/backports.
Доступность. Источник должен быть доступен на большинстве публичных зеркал Мандривы.
Поддержка. Пакеты из этого источника не поддерживаются Мандривой.
Мейнтейнер. Этот источник пополняется официальными мейнтейнерами пакетов. Нет никаких гарантий, что пакеты здесь проверены. Они могут быть изменены в любое время. Этот источник содержит пакеты, предназначенные для обновления пакетов в репозитории /main/release. Сотрудники Мандривы, работающие с багрепортами, проверяют эти пакеты, прежде чем они помещаются в официальный источник /main/updates. Сюда можно также помещать пакеты, предназначенные для обновлений, если вы хотите, чтобы обычные пользователи могли их протестировать.

/main/updates
Описание. Этот источник содержит регулярные обновления безопасности и багфиксы. Он должен быть подключён на вашей системе автоматически, если вы запускали MandrivaUpdate или добавляли источники в rpmdrake. Всем пользователям следует добавлять этот источник.
Доступность. Этот источник доступен на всех публичных зеркалах Мандривы.
Поддержка. Пакеты из этого источника поддерживаются Мандривой.
Мейнтейнер. Этот источник контролируется исключительно Инженерным Департаментом Мандривы. Он пополняется сотрудниками, отвечающими за поддержание и безопасность продукта. Никакие изменения или обновления не могут помещаться непосредственно в этот источник, предварительно они помещаются в /main/testing в ожидании возможных багрепортов от пользователей. Если вы являетесь разработчиком пакета, для помещения его в этот репозиторий вам нужно следовать инструкциям, изложенным здесь.

/main/backports
Описание. Источник /main/backports содержит пакеты с ПО, новые версии которого были выпущены после выхода дистрибутива. Подробности см. в Backports policy. Вы можете добавить этот источник, если хотите получить доступ к более новым версиям ПО, чем те, что включены в дистрибутив, однако имейте в виду, что эти пакеты официально не поддерживаются.
Доступность. Этот источник должен быть доступен на большинстве публичных зеркал Мандривы.
Мейнтейнер. Источник пополняется разработчиками Мандривы (её содрудниками и добровольными участниками*) без технических ограничений на помещение файлов. Серьёзные обновления важных компонентов не приветствуются.
* contributors, «вкладчики», т. е. люди, вносящие свой вклад в пополнение ПО Мандривы.

/non-free/release
Описание. Источник /non-free/release содержит официальные пакеты, не подпадающие под определение OSI как свободное ПО и/или ПО с открытыми исходными текстами. Он обычно содержит проприетарные драйверы для определённых устройств, приложений или языков, распространяемые с продуктами Mandriva Linux. В данный момент для какого-либо из выпущенных продуктов такого репозитория не существует.
Доступность. Это источник доступен на большинстве публичных зеркал Мандривы (в данный момент только для Cooker'а).
Поддержка. Пакеты из данного источника поддерживаются Мандривой (предоставляются обновления из /non-free/updates).
Мейнтейнер. Источник контролируется исключительно Инженерным Департаментом Мандривы. Никакие изменения или обновления в этот источник не допускаются. Все обновления идут в /non-free/updates.

/non-free/updates
Описание. Этот источник содержит регулярные обновления безопасности и багфиксы для пакетов из "non-free". Он подключается автоматически, если вы запускали MandrivaUpdate или добавляли источники в rpmdrake. Всем пользователям следует добавлять этот источник.
Доступность. Этот источник доступен на большинстве зеркал Мандривы.
Поддержка. Пакеты этого источника поддерживаются Мандривой.
Разработчик. Источник контроллируется исключительно Инженерным Департаментом Мандривы. Он пополняется Командой по поддержанию и безопасности продукта. Никакие изменения или обновления не могут быть помещены непосредственно сюда, предварительно они рассматриваются в багзилле.

/contrib/release
Описание. Источник /contrib/release содержит все неподдерживаемые Мандривой пакеты, распространяемые свободно / с открытым исходным текстом, которые были выпущены вместе с дистрибутивом. Добавляйте этот источник, если вы хотите получить доступ ко всему объёму неподдерживаемых пакетов, помимо тех, что находятся на установочном диске (дисках).
Доступность. Этот источник доступен на большинстве публичных зеркал Мандривы.
Поддержка. Пакеты из этого источника не поддерживаются Мандривой.
Мейнтейнер. Этот источник создаётся из проекта Cooker и полностью замораживается после выхода релиза. Изменения или обновления не допускаются. Пакеты этого источника обычно создаются и тестируются в сотрудничестве со внешними добровольными участниками (лицами или организациями, желающими добавить написанные ими программы в официальный репозиторий). Все исправления ошибок и обновления безопасности идут вначале (предпочтительно) в /contrib/testing, затем в /contrib/updates, обновления версий идут в /contrib/backports.
/contrib/testing
Описание. Этот источник служит тем же целям, что и /main/testing, но используется для тестирования новых неподдерживаемых пакетов прежде чем они будут проверены добровольными участниками или инженерами Мандривы. Он не предназначен для тестовых пакетов, направляемых в /contrib/backports.
Доступность. Этот источник должен быть доступен на большинстве публичных зеркал Мандривы.
Поддержка. Пакеты из этого источника не поддерживаются Мандривой.
Мейнтейнер. Этот источник пополняется в основном внешними участниками, хотя некоторые пакеты могут быть поддерживаемы сотрудниками Мандривы. Нет абсолютно никакой гарантии, что подлинность пакетов в этом источнике проверена. Они могут быть изменены в любое время. Здесь содержатся только обновления для пакетов из /contrib/release.

/contrib/updates
Этот источник содержит регулярные обновления безопасности и багфиксы для пакетов из репозитория /conrib. Он подключается на вашей системе автоматически, если вы запускали MandrivaUpdate или добавляли источники в rpmdrake. Всем пользователям, подключающим репозиторий /contrib, следует добавлять и этот источник. Эти обновления не тестируются, не подписываются и не поддерживаются сотрудниками команды безопасности Мандривы. Они выпускаются мейнтейнерами пакетов contrib. Мы не гарантируем, что все мантейнеры будут выпускать багфиксы или обновления безопасности, но для тех, кто это делает, предоставляется данный репозиторий.
Доступность. Этот источник доступен на всех публичных зеркалах Мандривы.
Поддержка. Пакеты из этого источника не поддерживаются Мандривой.
Мейнтейнер. Те мейнтейнеры, которые могут помещать свои пакеты в репозиторий Contrib, могут помещать их и в этот источник. Желательно предварительно помещать пакеты в /contrib/testing, чтобы сообщество могло их протестировать, а уже потом помещать их в этот источник. Заметьте, что новые версии программ, и другие обновления, не относящиеся преимущественно к безопасности и багфиксам должны помещаться не сюда, а в /contrib/backports.

/contrib/backports
Описание. Источник /contrib/backports содержит пакеты с ПО, которое было обновлено до новых версий после выхода дистрибутива.
Доступность. Этот источник должен быть доступен на большинстве публичных зеркал Мандривы.
Поддержка. Пакеты из этого источника не поддерживаются Мандривой.
Мейнтейнер. Этот источник пополняется мейнтейнерами Мандривы (её сотрудниками и помощниками) без технических ограничений на помещение сюда файлов.

PLF
Помимо вышеуказанных, есть также неофициальный репозиторий PLF (Фронт освобождения пингвинов :). Он официально не поддерживается Мандривой и выпускает пакеты для дистрибутивов Мандривы исключительно силами добровольцев. В основном в его состав входят программы, связанные с multimedia и т. п. Приведу перевод описания этого ресурса, взятого с его официального сайта.
«PLF это проект, посвящённый распространению пакетов с программным обеспечением, которые не могут быть включены в дистрибутивы linux по тем или иным причинам, связанным с различиями в законодательстве разных стран относительно прав на интеллектуальную собственность, вопросов безопасности и т. п., в частности:
- патентование ПО, алгоритмов, форматов и других плодов интеллектуальной деятельности;
- ограничения, накладываемые законом на свободу слова и информации;
- ограничения на использование определённых типов технических решений, таких, как средства криптографии;
- ограничение на ввоз программных технологий, например, необходимость получения для этого специальных разрешений;
и другие.
Немало превосходного ПО, из-за такого рода ограничений, существующих в тех или иных странах, не включается в дистрибутивы Линукс, которые, ради простоты и экономии, обычно делаются одинаковыми для всех стран.
Мы не хотим мириться с ситуацией, когда из-за подобных ограничений нельзя использовать ПО, которое является вполне законным в других странах, и потому мы стараемся предоставить пакеты профессионального уровня, которые можно легко использовать в стандартных дистрибутивах линукса.
Проект PLF открыт для всех дистрибутивов при наличии добровольцев, готовых заниматься поддержкой пакетов для этих дистрибутивов.
У нас есть зеркала по всему миру, свободно создаваемые и поддерживаемые независимыми организациями. Однако, устанавливая это ПО, вам следует самостоятельно удостовериться, что использование его в вашей стране не противоречит действующему законодательству».
Как и в случае основного дистрибутива, здесь также есть разделы free, non-free и backports.

3. Поиск и поключение репозиториев
Найти и подключить зеркала с необходимыми репозиториями можно несколькими способами.
В менеджере пакетов. В стандартом менеджере drakrpm (подробнее о нём пойдёт речь далее) есть специальный раздел, посвящённый подключению репозиториев. Просто выберите предпочитаемое вами зеркало, далее менеджер сам подключит репозитории и скачает описания пакетов. Данный способом можно подключить лишь «основные» репозитории, т. е. main, contrib и обновления к ним (вернее, подключить можно любые репозитории, просто адреса других придётся указывать самостоятельно).
С помощью сайта MirrorFinder. Несмотря на слово club в адресе, пользоваться им могут все, а не только члены клуба Мандривы. Как и в предыдущем варианте, предлагается выбор лишь из репозиториев main и contrib, кроме того, зеркала даются лишь для последней версии и версии Cooker (впрочем, пройдя оттуда по ссылкам, можно найти пакеты и для более ранних версий, если они там вообще есть). В полученной в результате поиска таблице адрес в столбце Protocol позволит непосредственно зайти на зеркало, а при нажатии на ссылку urpmi формируется команда для urpmi, позволяющая добавить этот репозиторий.
С помощью неофициального сайта EasyUrpmi. В отличие от предыдущих вариантов, здесь предлагается наиболее широкий выбор как версий Мандривы, так и зеркал: помимо основных, есть также и plf. После указания версии и нужных зеркал выдаётся список команд, которые следует выполнить поочерёдно в консоли от рута, или сохранить в файл, и запустить его, как исполняемый.
На практике самый простой способ добавления репозиториев за два шага. Первым шагом подключить стандартные репозитории через rpmdrake (в Мандриве 2007 нажав в разделе Media Manager кнопку Add... и выбрав зеркало). При этом rpmdrake сам подключает все репозитории, закачивает описания и правильно расставляет галочки (откуда брать только сами пакеты, а откуда обновления). После этого остаётся второй шаг подключить репозитории PLF (если они вам вообще нужны). Это нужно делать через EasyUrpmi, выбрав там только относящиеся к PLF зеркала.

4. Менеджеры пакетов
Основным менеджером пакетов в Мандриве является urpmi. Как и во многих других дистрибутивах, работать с менеджером пакетов можно как из командной строки, так и посредством графического интерфейса. Для начала рассмотрим этот второй вариант, как более привычный для начинающего пользователя.
Графический вариант urpmi носит название rpmdrake (или drakrpm, что является ссылкой на тот же rpmdrake). Для его запуска можно воспользоваться стандартным пунктом меню «Configure your computer» (обычно его называют Mandriva Control Center, или, сокращённо, MCC), выбрав там раздел «Software manadgement», или же запустить (от рута) непосредственно drakrpm. У нас откроется раздел из четырёх пунктов: «Install», «Remove», «Updates» и «Media manager» (так было в ранних версиях, в Мандриве 2007 они называются более пространно, но смысл тот же, поэтому я буду придерживаться этих кратких названий). Раздел «Media manager» используется для выбора используемых репозиториев, о работе с ним уже было написано выше. Задав репозитории, можно непосредственно выполнять установку/удаление программ. Для этого служат два других раздела: «Install» и «Remove». Впрочем, в Мандриве 2007 уже нет такого чёткого разделения, в разделе, посвящённом установке, можно и удалять пакеты, а сам этот раздел имеет более общее название Software Manadgement. Тут всё достаточно очевидно. Сортируем пакеты, как нам удобно, если непонятно, для чего нужен тот или иной пакет смотрим описания, отмечаем нужные пакеты для установки или удаления. Выбрав то, что надо, нажимаем Apply.
Зачастую для успешной установки одного пакета необходимо, чтобы были установлены и некоторые другие пакеты, от которых он зависит. В этом случае будет выдан запрос на установку всех этих пакетов, после чего они все будут скачаны и установлены.
Наконец, четвёртый раздел «Updates», предназначен, как нетрудно догадаться, для получения обновлённых пакетов. Теоретически, после установки Мандривы в трей помещается специальная обновлялка, призванная информировать о наличии новых версий, но на практике она работает лишь в платных версиях дистрибутива, так что можно спокойно её оттуда убрать, и периодически заглядывать в этот раздел Updates за обновлениями. При запросе обновлений менеджер пакетов сверяется со списком пакетов в репозитории, и, при наличии обновлений, выводит список обновлённых пакетов. В Мандриве 2007 требуется вручную отметить каждый пакет, которым мы хотим обновить, в следующих версиях этот порядок обещают изменить.
Пользоваться графическим менеджером достаточно удобно, но, в-основном, тогда, когда речь идёт об установке/удалении достаточно большого объёма программ, например, непосредственно после инсталляции системы. Если же нужно установить/удалить один-два пакета, то гораздо проще и быстрее воспользоваться консольным менеджером пакетов, собственно, urpmi. Подключение репозитория осуществляется командой
urpmi.addmedia ftp:/// with <относительный путь к hdlist>
(другие варианты можно посмотреть традиционным способом, набрать urpmi.addmedia --help)
При подключении нескольких репозиториев, такую команду нужно дать для каждого (drakrpm и urpmi используют общие базы данных, поэтому, если вы уже подключили все нужные репозитории через графический интерфейс, делать это снова, естественно, не нужно. Справедливо и обратное).
Подключили можно пользоваться. Для поиска пакетов пользуемся командой
urpmf ключевое слово (если добавить ключ --summary, будет показываться краткое описание предлагаемых пакетов)
для установки

urpmi пакет

для удаления

urpme пакет.

Как обычно, две последние операции надо делать под рутом.

Smart. Менежер пакетов Smart официально не входит в состав Мандривы. Хотя мог входить. Поэтому я и решил уделить ему внимание в этом обзоре (а также по той причине, что он, наряду с urpmi, поддерживается упомянутым выше сервисом Easy Urpmi). Дело в том, что Smart был менеджером пакетов в дистрибутиве Connectiva, том самом, который, как все знают, дал Мандрейку вторую половину его нынешного названия. После слияния Mandrake и Connectiva предполагалось, что Smart станет официальным менеджером пакетов нового дистрибутива Mandriva. Но после ухода из Мандривы автора Smart'а, Густаво Ньемейера (Gustavo Niemeyer, сейчас сотрудник фирмы Canonical, выпускающей Ubuntu), что-то там у них не сложилось, и менеджер пакетов остался прежний. Smart, тем не менее, доступен для установки обычным путём, из репозиториев:

# urpmi smart-gui (это потянет за собой и сам smart, и необходимые библиотеки к нему).

Как вы уже поняли из только что написанного, здесь так же есть командная строка и гуевый интерфейс. Последний запускается командой

smart --gui

Те, кому довелось пользоваться в Убунте менедежером Symaptic, увидят вполне привычную для себя картину (что неудивительно, учитывая, что у обоих менеджеров один автор). Отмечаем мышкой интересующий пакет, внизу можно прочитать некоторую информацию относительно него (её там предоставляется побольше, чем в rpmdrake), по правой кнопке мыши доступны операции с пакетом (установить, удалить и т. п.) Есть фильтр, позволяющий скрыть те или иные категории пакетов. Репозитории здесь называются Channels, база данных для них своя, независимая от базы urpmi, поэтому их надо подключать отдельно. (Обратите внимание, что после установки Smart'а в Мандриве 2007 там уже будут заданы репозитории (Channels) дистрибутива Cooker. Их необходимо удалить (все, кроме rpm-sys, который содержит, собственно, базу данных установленных пакетов), и подключить вместо них репозитории текущего дистрибутива).
Синтаксис командной строки напоминает синтаксис дебиановского apt'а:

smart install пакет
smart remove пакет


и т. д. Подробную информацию по командам можно, как всегда, получить, набрав

smart --help

В целом, впрочем, я не увидел каких-либо существенных преимуществ smart'а по сравнению со штатным менеджером, хотя тем, кто привык к убунтовскому synaptic'у, или к стилю дебиановского aptitude он, возможно, покажется удобнее.

5. Установка единичных пакетов
Иногда бывает нужно установить один или несколько rpm, находящихся вне репозитория. Например, если пакет уже имеется на жёстком диске, или мы скачали его с сайта какой-либо программы, где имеется версия для Мандривы. Для установки таких пакетов следует воспользоваться программой rpm. В большинстве случаев достаточно ввести

rpm -i имя_пакета.rpm

Следует иметь в виду, что rpm, в отличие от urpmi, не занимается отслеживанием зависимостей. Вернее, он их отслеживает, но не выкачивает недостающие пакеты из интернета, как это делает urpmi; он просто выдаёт ошибку и прекращает работу. Поэтому при установке нескольких пакетов надо сначала ставить те, от которых зависят другие. Иногда бывают ситуации, когда несколько пакетов взаимно зависят один от другого. Например, Openoffice.org поставляется в виде архива со множеством rpm внутри. В подобном случае пакеты нужно поместить в одну директорию, и запустить

rpm -i *.rpm

Установщик сам разберётся, какие пакеты в какой последовательности устанавливать.