• multiverse – пакеты с несвободной лицензией, поддерживаемые сторонними разработчиками;
• restricted – пакеты с несвободной лицензией, которые не могут быть изменены, например двоичные драйверы.
Набрав в строке веб-браузера указанный адрес, можно обнаружить, что последние два компонента в описании репозитария являются подкаталогами каталога dists (рис. 1.8).
Рис. 1.8. Репозитарий Ubuntu
Продвигаясь далее, можно найти еще каталоги, соответствующие архитектуре и локализации, но добавлять тип архитектуры и локализацию в описание репозитария не нужно – эти данные будут получены автоматически по текущим настройкам системы. Возникает вопрос, что делать, если была установлена версия системы под i386, а на компьютере установлен процессор AMD64. Загружать пакеты под свой тип процессора просто. Нужно открыть в любом текстовом редакторе файл /etc/apt/apt.conf.d/01ubuntu и в секции APT добавить следующую строку:
Architecture "amd64"
Либо в любом месте добавить
APT::Architecture "amd64"
Затем необходимо сохранить изменения, обновить список пакетов и попробовать получить небольшой файл; если пакет имеет в названии amd64, все сделано верно. Теперь можно обновить всю систему, для чего следует выполнить всего одну команду:
$ sudo apt-get dist-upgrade
Примеры всех параметров этого файла можно найти в каталоге /usr/share/doc/apt/examples. Сами пакеты находятся на сайте в другом подкаталоге (pool) и рассортированы по несколько иному принципу, но, так как менеджер пакетов скрывает эту структуру, не будем вдаваться в подробности.
Утилита APT проста в использовании. Например, чтобы найти программу, проигрывающую MP3-файлы, достаточно выполнить команду sudo apt-cache search mp3. В результате будет выведен список всех пакетов. Для установки любого пакета достаточно ввести sudo apt-get install имя_пакета; если пакет необходимо обновить, вместо install используется update. При наличии соединения с Интернетом все остальное утилита сделает сама. При желании самостоятельно скомпилировать пакет, который имеется в репозитарии, чтобы не разбираться с зависимостями, вначале выполните следующую команду:
$ sudo apt-get build-dep имя_пакета
Затем скомпилируйте новую версию программы (./configure; make), но вместо команды для установки make install используйте команду apt-get install checkinstall, которая создаст новый пакет и затем установит его.
Добавление репозитариев. Добавить новый репозитарий можно несколькими способами. Самый простой – открыть в любом текстовом редакторе (через sudo) файл /etc/apt/sources.list и вписать нужную строку. Причем следует помнить, что чем ближе запись к началу файла, тем большим преимуществом будет обладать этот репозитарий.
В составе дистрибутива Kubuntu имеется понятный графический интерфейс к apt-get – Adept (рис. 1.9). В его окне достаточно выбрать нужное приложение, и оно будет автоматически установлено.
Рис. 1.9. Adept – программа для установки приложений в Kubuntu
Для того чтобы добавить репозитарий с его помощью, выполните команду Вид → Управление репозитариями, перейдите на вкладку Third-party Software (Компонент третьей стороны), нажмите кнопку Add (Добавить) и вставьте нужную строку. Здесь же на других вкладках включается автоматическое обновление списка пакетов, выбираются категории пакетов основного репозитария и используемое зеркало. Страница Authentication (Аутентификация) предназначена для загрузки GPG-ключей, необходимых для проверки подписи пакетов. Последнее делать необязательно, пакеты будут устанавливаться и без этого, но так вы будете уверены, что их собрал именно тот человек, с чьего ресурса они получены, да и менеджер пакетов не будет задавать лишних вопросов. Месторасположение файлов ключей обычно указывается на главной странице ресурса. Его можно добавить и в командной строке. Например:
$ wget http://seveas.imbrandon.com/1135D466.gpg -O– | sudo aptkey add -
В более распространенном графическом фронт-энде к apt-get Synaptic (рис. 1.10) репозитарий добавляется через команду Settings → Repositories (Настройки → Репозитарии) (см. рис. 1.7).
Рис. 1.10. Программа для установки приложений Synaptic
После того как репозитарии добавлены, следует обновить список пакетов. В консоли это делается командой:
$ sudo apt-get update
В Synaptic достаточно нажать кнопку Reload (Перезагрузить), в Adept – Получить обновления.
Информация о репозитариях и пакетах собирается в каталоге /var/lib/apt/lists в виде файлов, имена которых соответствуют названию архива.
$ ls /var/lib/apt/lists ua.archive.ubuntu.com_ubuntu_dists_feisty-backports_main_binaryi386_Packages
Заглянув в этот каталог, можно получить информацию о любом пакете. Впрочем, смотреть необязательно – это сделают утилиты. Например, введя sudo apt-cache showpkg gcc-4.1, можно узнать все о пакете gcc.
Создание локального репозитария. Создать локальную копию репозитария можно одной командой (требуется пакет debmirror):
$ /usr/bin/debmirror –nosource -m –passive
–host=archive.ubuntulinux.org –root=ubuntu –method=ftp
–progress –dist=feisty,feisty-security,
feisty-updates,feisty-backports –ignore-release-gpg
–section=main,restricted,multiverse,universe
–arch=i386,amd64
Большая часть параметров понятна из объяснений выше, трафик составит не один гигабайт и потребует много свободного места на диске. Чаще возникает необходимость создать свой репозитарий из уже скачанных файлов и пользоваться им как обычно, с помощью apt-get. Для создания списка пакетов понадобится утилита dpkg-scanpackages, входящая в состав dpkg-dev. Установите:
$ sudo apt-get install dpkg-dev
Теперь создайте каталог, в который скопируйте все пакеты.
$ mkdir archives
Перейдите в образованный каталог.
$ cd archives
Выполните следующую команду:
$ dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
По окончании работы утилиты будет выдан список пакетов и их количество; чтобы добавить новый репозитарий в файл sources.list, нужно прописать путь к созданному каталогу, например:
deb file:/home/grinder/archives ./
Сохраните изменения и введите sudo apt-get update; если в /var/lib/apt/lists добавился новый каталог, все было сделано верно. Теперь можно копировать этот каталог на другие системы. При добавлении в него пакетов процедуру придется повторить. В Интернете можно найти достаточно описаний того, как перенести свой репозитарий на CD/DVD. Существует вариант проще – использовать утилиту APTonCD (aptoncd.sourceforge.net) (рис. 1.11). Сначала установите ее следующей командой:
$ sudo apt-get install aptoncd
Рис. 1.11. Окно программы APTonCD
Теперь можно вызвать ее через меню Система. Пользоваться программой просто. На вкладке Create (Создать) нужно нажать кнопку Create APTonCD (Создать APTonCD) – будет просканирован каталог /var/cache/apt/archives, и все файлы будут добавлены в проект. Далее нажмите кнопку Add Package (Добавить пакет) и укажите пакеты, находящиеся отдельно. Нажмите кнопку Options (Параметры) и в списке Medium Type (Тип носителя) выберите тип образа – CD или DVD, а в поле Destination Folder (Папка назначения) укажите каталог, куда будет помещен готовый ISO-образ.
Нажмите OK – программа создаст образ и появится диалоговое окно, предлагающее сразу записать его на носитель. На вкладке Restore (Восстановить) можно скопировать (то есть восстановить) все файлы и добавить CD-ROM.
Конвертеры пакетов
Отдельно хотелось бы отметить наличие утилит, позволяющих конвертировать пакеты из одного формата в другой. Их возможности применения ограничены, так как из пакета одного типа получить полноценный другой тип пакета невозможно. Кроме того, приложения, входящие в состав пакета, могут не работать в другом дистрибутиве из-за различий версий библиотек, неудовлетворенных зависимостей и отличий в организации файловой системы. По этой причине их нельзя использовать для установки важных системных файлов. Однако в некоторых случаях (в первую очередь при установке недвоичных пакетов, например документации, словарей и прочего) их применение оправданно. Это утилиты rpm2cpio, rpm2tgz (http://www.rpm2tgz.com) или почти универсальная alien (http://kitenet.net/programs/alien/).
Утилита rpm2tgz по умолчанию входит в состав дистрибутива Slackware и клонов и позволяет конвертировать rpm-пакеты в tgz, которые затем можно установить с помощью installpkg.
$ rpm2tgz package.rpm
В результате в текущем каталоге появится пакет с таким же именем, но расширением tgz; установите его.
# installpkg package.tgz