Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Установка новых программных пакетов

Пособие для начинающих по форматам пакетов ПО в Линукс

Оригинал: A spotter's guide to open-source Linux package formats
Автор: David M Williams
Дата: 16 января 2008
Свободный перевод: Алексей Дмитриев
Дата перевода: 24 января 2008

Ищете приложения с открытым исходным кодом? Дистрибутивы Линукс имеют давнюю традицию упаковывать программы в легко устанавливаемые пакеты. Однако поиск самих этих пакетов отнюдь не всегда интуитивно понятен, да и находятся они не всегда в желаемом виде. Эта статья о том, как выжать максимум из Линукс пакетов.

Первое место, где надо искать - это ваш дистрибутивный набор CD или DVD. Все дистрибутивы Линукс, кроме "самых маленьких", содержат гораздо больше программ, чем обычно установлено. Когда вы устанавливаете дистрибутив, вы имеете выбор типа устанавливаемой системы, который зачастую сводится к выбору между рабочей станцией и сервером. В зависимости от выбора, устанавливаются соответствующие наборы пакетов.

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

И тут на помощь приходит Интернет. Зайдите на великие сайты открытых исходников, такие как FreshMeat или Sourceforge. Просмотрите их в поисках новых интересных приложений.

Не все всегда просто, даже если вы нашли нечто подходящее: возьмите хоть MySource Classic для примера. Это мощная система позволяет оперировать содержимым вэб-сайтов и интранет содержимым, посвященным открытым исходникам - звучит очень круто. Она создана, чтобы позволить технически неподготовленным пользователям создать и поддерживать их собственные он-лайн проекты безопасно, профессионально и недорого. Это ваше классическое LAMP приложение, написанное на PHP и использующее Apache и MySQL.

Между тем, MySource Classic доступен для скачивания в двух форматах: как .zip файл, или как .tar.gz файл. Оба формата являются архивными. Почти все знают, что такое zip файл, в то время как .tar.gz (также встречающийся как .tgz) - это чисто Linux/UNIX специфичный формат, известный под именем тарбалл.

Тарбалл - удобный формат для распространения исходного кода, он весьма универсален и легко переносим (слово tar происходит от Tape ARchive - из тех времен, когда применялись устройства архивации на магнитофонной пленке) Однако он сильно отличается от формата пакетов, в которых находятся приложения в вашем дистрибутиве. Пакеты содержат исполняемые двоичные файлы, плюс конфигурационные файлы, плюс некоторые необходимые файлы, и все это разложено в определенном порядке создателем пакета безо всякого утомительного участия с вашей стороны

Запустите терминал и, с помощью команды tar, просмотрите архив; как и везде в Линукс, тут существует несколько опций.

Вы можете разархивировать тарбалл при помощи команды gunzip:

gunzip mysource-2.16.2.tar.gz

Это создаст новый файл под названием mysource-2.16.2.tar, исследуйте его содержимое при помощи:

tar -tvf mysource-2.16.2.tar | more

Содержимое теперь стало видно. Есть другой способ просмотреть содержимое тарбалла, не разархивируя его, при помощи другого варианта той же команды tar:

tar -tzvf mysource-2.16.2.tar | more

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

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

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

Итак, распакуем его. Снова применим tar:

tar -xf mysource-2.16.2.tar

Или, как раньше, минуя стадию gunzip, добавим опцию -z:

tar -xzf mysource-2.16.2.tar.gz

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

Тарбаллы - наиболее распространенный формат архива, но не единственный; иногда вы можете встретить cpio архивы, которые заканчиваются расширением (суффиксом) .cpio. Такой формат обычно применяется внутри rpm пакетов, сам по себе почти не встречается. Но, коли вы встретитесь с таким форматом, то учтите, что, хотя команда cpio и имеет схожие опции с командой tar, cpio работает на входе и выходе потоков (конвейеров), а не файлов, так что, чтобы просмотреть архив смело пишите:

cpio -tv < examplefile.cpio

а чтобы распаковать содержимое архива:

cpio -i -d < examplefile.cpio

Когда тарбалл получен и распакован, ваша задача скомпилировать и установить программу. Этот формат наиболее универсален и не зависит от типа вашего дистрибутива. Есть хорошая вероятность, что приложение установится, при условии, что вы знаете, что делаете. К счастью "знаете что делаете" обычно сводится к серии из трех команд:

./configure
make
make install

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

Контрастируя с вышеописанным, менеджеры пакетов гораздо более умны и доброжелательны - но и гораздо менее универсальны в смысле применимости к разным дистрибутивам. Как бы то ни было, преимуществ у них очень много. Менеджер пакетов будет отслеживать, что и в какое место было установлено, и где находятся эти файлы. Менеджер пакетов без труда поможет вам найти новые доступные версии ваших приложений, и, что лучше всего, обеспечит удовлетворение зависимостей. Если вы попытаетесь установить пакет, которому для работы нужен некий компонент (например, библиотека), то менеджер пакетов проследит, чтобы правильная версия этого компонента (в нашем случае библиотеки) также была установлена.

Два наиболее обычных формата пакетов суть: Debian пакеты и RPM пакеты. Первый формат используют такие дистрибутивы как Debian, Ubuntu, Knoppix и некоторые другие; RPM формат применяется в Red Hat, Fedora, Suse и некоторых других.

Ели только вы не создаете собственный дистрибутив Линукс, выбор менеджера пакетов уже сделан за вас. Я всегда подчеркивал, что разница между дистрибутивами Линукс состоит, в основном, в том, какой менеджер пакетов используется, и какой набор пакетов устанавливается по умолчанию. В самом деле, все версии Линукса используют одинаковые ядра, практически одинаковые инструменты GNU tools - но главное различие дистрибутивов - менеджер пакетов.

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

На крайний случай, возможно извлечь все файлы из пакета, а затем вручную установить их. Как говорилось ранее, формат RPM пакетов использует внутри себя формат архива cpio. Простая команда rpm2cpio поможет разархивировать внутренний архив. Для того чтобы извлечь все файлы из пакета, не устанавливая его, применяйте команду:

rpm2cpio examplepackage.rpm | cpio -i

Подобным же образом, пакет в формате Debian содержит набор тарбаллов, заархивированных в формате, называемом ar; как можно догадаться, это родственник формата tar, только куда более фундаментальный. Одно то, что он не поддерживает каталоги, говорит о многом.

Извлекайте содержимое пакета Debian следующим образом:

ar -x examplepackage.deb

Это приведет к появлению двух тарбаллов: control.tar.gz и data.tar.gz, плюс одного текстового файла: debian-binary.

Файл debian-binary содержит одну строку - это просто название версии использованного при создании пакета упаковщика. Тарбалл control.tar.gz содержит инсталляционные скрипты и полезную информацию; тарбалл data.tar.gz содержит двоичные и конфигурационные файлы, все файлы, необходимые программе для работы. При острой необходимости вы можете открыть этот архив командой tar -xf, хотя, если приложение сложное, вы зададите большую работу инсталляционным скриптам.

Чуть выше, я уже говорил, что одно из замечательных свойств менеджера пакетов является его способность регулярно обновлять ваши приложения до новейших версий. Используемые для этого инструменты варьируют в зависимости от дистрибутива, но проверьте, нет ли у вас: Apt (Advanced Package Tool - Усовершенствованный Пакетный Инструмент), Yum (Yellowdog updater modified - модифицированный обновитель ЖелтаяСобака), Synaptic (графическое расширение Apt) и up2date.

Apt - это старая добрая программа, которая родом из Debian и родственных дистрибутивов, но теперь поддерживает и RPM. Это не столько единый инструмент, сколько набор утилит; чаще других используются apt-get, который скачивает пакеты с репозиториев, и apt-cache, который выясняет, что, собственно говоря, нужно скачать. Synaptic не предлагает новых функций, но объединяет все вместе в удобном графическом интерфейсе.

Подобно Apt'у, Yum - это утилита командной строки для RPM пакетов. Она может выяснить, что доступно, установить пакеты, и производить другие действия, типа листинга установленных пакетов и удаления старых версий пакетов.

Программа up2date также работает с RPM пакетами, но она обеспечивает доступ сразу и к Yum и Apt репозиториям, предоставляя тем самым больший выбор.

Так выходите он-лайн, устанавливайте свободный софт, используйте Свободные Операционные Системы.