Избранные Материалы

Unix/Linux :: Пакетный менеджмент приложений, установленных из исходных кодов

Если вы пока-что не используете ОС Linux в качестве основной ОС на вашем ПК, то вы наверняка слышали басни о том, как трудно обстоят дела с установкой софта для этой ОС — что-то там нужно настраивать, компилировать и т.д.

Те, кто удостоился поинтересоваться вопросом более подробно, уже знает, что на данный момент эту «проблему» можно назвать весьма надуманной, так как большинство дистрибутивов используют пакетное управление программным обеспечением. RPM- или DEB-пакеты — это уже скомпилированное (тоесть, поставляемое в бинарном виде) ПО, готовое к непосредственной установке. (Рек.: ) Почти тоже самое, что и в Windows, только более удобное в обращении :) Судите сами: не нужно ничего искать в интернете или на дисках с ПО, загружать, выполнять пошаговую установку и т.д. — достаточно лишь выполнить одну команду в консоли (для посвященных ;)) или выбрать нужный пакет с ПО в менеджере пакетов с графическим интерфейсом (для новичков или тех, кому консоль не по душе) и нажать кнопку «установить». В данном плане Linux существенно опередил своих конкурентов. Впрочем, другие открытые операционные системы (*BSD, OpenSolaris, …) также обладают подобной функциональностью, пусть и не всегда столь гибкой и с поддержкой меньшего количества ПО, поставляемого в бинарных пакетах. Короче, только одно семейство ОС все еще использует устаревший подход к установке ПО и остается позади всех. Но об этом семействе операционных систем мы в данной заметке говорить не будем :)

А говорить мы будем как раз о тех случаях, когда в какой-либо Unix/Linux-системе возникает проблема отсутствия того самого бинарного пакета с таким необходимым вам ПО или присутствие только его устаревшей версии (в то время, как вам необходимо использовать свежую версию ПО, а она доступна для загрузки лишь в виде архива с исходными кодами). Что греха таить — такие ситуации иногда возникают. И цель данной заметки — развеять миф о том, что установка ПО из исходных кодов и управление установленным таким образом ПО — такая уж непосильная задача, как воспевают ее некоторые из вышеупомянутых басен…

Посвященные пользователи (привет, IT-фрики! ;)) наверняка умеют компилировать ПО из исходников (и знают, что это, в большинстве случаев, — весьма тривиальное занятие) и для них будет интересен лишь момент, разъясняющий как организовать «пакетный менеджмент» ПО, установленного таким образом. Для новичков же, не имеющих опыта в компиляции ПО, лишь кратко приведем базовые инструкции по компиляции (информации по этой теме в сети — пруд пруди, ищущий да найдет :)).

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

./configure

которая выполняет пре-компиляционное конфигурирование (ищет все нужные для компиляции библиотеки, переменные окружения и т.д.);

make

которая непосредственно компилирует приложение;

make install

которая устанавливает скомпилированное приложение.

В принципе, если не возникнет непредвиденных проблем, — это все, что нужно для компиляции и установки ПО из исходных кодов (иногда команда «./configure» может «ругаться» на отсутствие тех или иных библиотек, необходимых для сборки вашего приложения; в таком случае их необходимо установить, используя стандартный менеджер бинарных пакетов, и повторить попытку снова).

А теперь, когда мы прояснили момент с компиляцией и установкой ПО из исходников, поговорим о том, почему такой подход к установке ПО — плохой (чем он хорош вы и так наверняка догадались — во-первых, скомпилированные приложения оптимизируются под аппаратное обеспечение вашего конкретного ПК и работают несколько быстрее их прекомпилированных версий; во-вторых — самые свежие версии любого открытого ПО всегда доступны в виде исходников, в то время, как бинарные пакеты для вашей ОС могут отсутствовать).

А плох он тем, что после установки приложения, файлы, которые были разбросаны по файловой системе в процессе установки нигде не зарегистрированы и удалить установленное таким образом ПО представляется весьма непростой задачей (лазать по всей файловой системе и вытирать файлы вручную, согласитесь, — не самый элегантный подход; кроме того, не известно, какие файлы нужно вытирать — ведь список установленных файлов нигде не зарегистрирован, так что данный подход еще и, вероятнее всего, не представляется возможным к осуществлению). Конечно, некоторые из приложений можно деинсталлировать, выполнив команду «make uninstall» в той же директории, из которой было установлено приложение, но ведь не хранить же на жестком диске все директории с исходниками установленного ПО? Как же выйти из этой ситуации? А очень просто — использовать менеджер ПО, установленного из исходных кодов.

Кратко идею работы таких приложений можно описать следующим образом: после выполнения команд «./configure» и «make«, выполняется все та же команда «make install«, только не напрямую, а через некий «прокси», отслеживающий устанавливаемые этой командой файлы (те самые, которые она разбрасывает по всей ФС). Этот «прокси» и есть наш менеджер установленного из исходников ПО.

Таких менеджеров, наверняка, существует несколько, но мы рассмотрим лишь один — тот, который автор сам использует уже довольно давно и который зарекомендовал себя, в его случае, только наилучшим образом — paco (pacKAGE oRGANIZER — проект, естественно, открытый и бесплатный).

pkglist.png

paco - интерфейс командной строки

Установить paco можно как из его исходников (вы уже знаете, как это делается ;)), так и посредством стандартного менеджера бинарных пакетов — для большинства дистрибутивов Linux соответствующий пакет присутствует в стандартных репозиториях.

Использование paco тривиально — при выполнении команды «make install» посредством «прокси» (в роли которого paco и выступает), нужно лишь указать желаемое название регистрируемого пакета:

paco -l -p app-1.0 «make install»

Здесь paco — команда для запуска установочного «прокси», -l (log) — параметр, указывающий на необходимость отслеживания процесса установки, -p (package) — параметр, определяющий желаемое имя пакета для регистрации (в нашем примере это «app-1.0«), «make install» — собственно все та же команда установки, которая в данном случае будет не просто выполнена, но и отслежена нашим «прокси».

К слову, если вы решили установить из исходных кодов и сам paco, то после его установки командой «make install«, следует также выполнить команду «make logme«, которая внесет в список зарегистрированных установленных пакетов и сам paco.

Вывести список установленных при помощи paco приложений, можно выполнив следующую команду:

paco -a

Удалить установленное через «прокси» приложение также легко:

paco -r app-1.0

где -r — параметр, указывающий на необходимость выполнения команды удаления «пакета», а «app-1.0» — собственно имя пакета, который следует удалить.

К слову, paco также умеет выводить список всех файлов любого из установленных им приложений, производить поиск пакетов по установленным файлам, собирать из них бинарные пакеты и многое другое.

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

gpaco.png

gpaco - графический интерфейс paco

Напоследок заметим, что установленные вышеописанным образом приложения теоретически могут привести систему в неконсистентное состояние (скажем, скомпилированный и установленный из исходников файл может «перетереть» уже существующий в системе файл более ранней/поздней версии, а это чревато проблемами). Впрочем если придерживаться базовых правил (деинсталлировать бинарные пакеты со старыми версиями приложения перед установкой новой версии из исходных кодов, устанавливать только пользовательское ПО, а программные библиотеки — только посредством стандартного пакетного менеджера и т.п.), то проблем возникнуть не должно. По крайней мере у автора за несколько лет использования paco никаких проблем, связанных с ним, не возникло.

Официальный сайт проекта paco: http://paco.sourceforge.net/

Не бойтесь компилировать! Удачи ;)

Tweet

Об авторе:
Профессиональный разработчик программного обеспечения, блоггер, адепт Open Source, казуальный путешественник, фотограф-аматор.
Подробнее »
Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong Twitter