5.9 Управление пакетами Slackware
Пакет программ это упакованный набор связанных программ, которые готовы для
установки. Когда вы скачиваете архив исходных текстов программ, вам надо
конфигурировать, компилировать и установить всё вручную. С пакетом программ
это уже было проделано за вас. Всё, что вам надо сделать, это установить
пакет. Другое очень удобное преимущество пакетов в том, что их можно очень легко
удалить или обновить, если вы пожелаете. Slackware поставляется со всеми
необходимыми пакетами для управления пакетами. Вы можете устанавливать, удалять,
обновлять, создавать и проверять пакеты очень легко.
5.9.1 Обзор формата пакетов
Перед тем, как приступить к изучению утилит, вам надо ознакомиться с форматом
пакетов Slackware. Пакет, это всего навсего tar архив, сжатый при помощи
gzip. Пакет устроен таким образом, что он может быть развёрнут в корневом
каталоге файловой системы.
Здесь приведена вымышленная программа и пример её пакета:
./ |
usr/ |
usr/bin/ |
usr/bin/makehejaz |
usr/doc/ |
usr/doc/makehejaz-1.0/ |
usr/doc/makehejaz-1.0/COPYING |
usr/doc/makehejaz-1.0/README |
usr/man/ |
usr/man/man1 |
usr/man/man1/makehejaz.1.gz |
install/ |
install/doinst.sh
|
Система управления пакетами развернёт этот файл в корневом каталоге, чтобы
установить его. Будет сделана соответствующая запись в базе данных пакетов,
включающая содержание этого пакета, чтобы он мог быть обновлён или удалён позже.
Обратите внимание на под-каталог install/. Это специальный
каталог, который может содержать скрипт, который будет выполнен после
копирования файлов. Скрипт называется doinst.sh. Если система обработки
пакета найдёт такой скрипт, он будет выполнен после установки пакета.
Другой сценарий может быть использован в пакете, но мы обсудим это более
детально в подразделе 5.9.3.
5.9.2 Утилиты пакетов
Есть четыре основных утилиты для управления пакетами. Они могут устанавливать,
удалять и обновлять пакеты.
pkgtool
pkgtool(8) это управляемая меню программа, позволяющая установку и
удаление пакетов. Основное меню выглядит вот так:
Установка может быть произведена из текущего каталога, другого каталога, или с
флоппи дисков. Просто выберите метод, который вы хотите использовать и pkgtool
просмотрит выбранное вами расположение, на факт наличия действительных
пакетов для установки.
Вы так же можете просмотреть список пакетов, который будет выглядеть вот так:
Если вы хотите удалить пакеты, выберите remove опцию, и вы увидите список всех
установленных пакетов, с возможностью выбора нескольких из них для удаления.
Пометьте те, которые вы хотите удалить, и нажмите OK.
pkgtool удалит их.
Некоторые пользователи предпочитают эту команду утилитам командной строки.
Тем не менее, следует отметить, что утилиты командной строки предоставляют
гораздо больше опций. Так же, возможность обновлять пакеты реализована
только, как утилита командной строки.
installpkg
installpkg(8) обеспечивает установку новых для вашей системы
пакетов. Синтаксис таков:
# [ROOT=<path>] installpkg [option] <package name>...
|
installpkg имеет три опции. Только одна из них может использована при
вызове программы.
Опция | Действие |
-m | Производит makepkg операцию с текущим каталогом. |
-warn | Показывает, что случится, если вы установите пакет. |
| Это довольно полезно, так как вы видите в точности, |
| что случится при установке пакета. |
-r | Установит рекурсивно все пакеты из текущего каталога. |
| <package name> может так же быть маской имён.
|
Table 5.6: Опции installpkg
Если вы указали переменную окружения ROOT, до выполнения installpkg,
то путь, указанный в переменной будет использован вместо корневого каталога.
Это полезно для настройки новых дисков для вашего корневого каталога. Они
обычно будут смонтированы к /mnt или что-то другое, отличное
от /.
База данных установленных пакетов есть не что иное, как набор файлов,
расположенных в /var/log/packages. Для каждого из пакетов там
создаётся текстовый файл. Если в пакете есть после-установочный скрипт, он
записывается в /var/log/scripts/<packagename>.
Вы можете указать несколько пакетов, или даже использовать шаблоны для имён
пакетов. Обратите внимание, что installpkg не скажет вам, если вы
переписываете уже установленный пакет. Она просто установит новый пакет
поверх старого. Если вы хотите быть уверенны, чтобы файлы от старого пакета
были удалены из вашей системы, воспользуйтесь upgradepkg.
removepkg
removepkg(8) обеспечивает удаление пакетов, уже установленных в
вашей системе. Синтаксис таков:
# [ROOT=<path>] removepkg [option] <package name>...
|
Для removepkg есть четыре опции. Только одна из них может быть
использована при вызове программы.
Опция | Действие |
-copy | Пакет будет скопирован в резервный каталог. Это создаст дерево |
| каталогов оригинального пакета, без удаления его. |
-keep | Сохраняет временные файлы, которые создаются при удалении. |
| Полезно только для тестирования правильности работы. |
-preserve | Пакет удаляется из системы, но в то же время, его копия |
| сохраняется в резервный каталог. |
-warn | Показывает, что произойдёт, если вы удалите пакет.
|
Table 5.7: Опции removepkg
Если вы указали переменную окружения ROOT, до выполнения removepkg,
то путь, указанный в переменной будет использован вместо корневого каталога.
Это полезно для настройки новых дисков для вашего корневого каталога. Они
обычно будут смонтированы к /mnt или что-то другое, отличное
от /.
removepkg просматривает так же и остальные пакеты, и удаляет только файлы,
являющиеся уникальными для удаляемого пакета. Программа так же просмотрит
пост-установочный скрипт пакета, и удалит все символические ссылки, которые
были созданы им.
Во время процесса удаления отображается статус. После удаления, база данных
пакета перемещается в /var/log/removed_packages, а пост-установочный
скрипт, в /var/log/removed_scripts.
Как и в случае с installpkg, вы можете указывать несколько пакетов, или
использовать шаблоны для имён пакетов.
upgradepkg
upgradepkg(8) обновит пакет, уже присутствующий в вашей системе.Синтаксис
программы таков:
# [ROOT=<path>] upgradepkg <package name>...
|
или
# [ROOT=<path>] upgradepkg |
<old package name>%<new package name>
|
upgradepkg вначале устанавливает новый пакет, а затем удаляет старый
пакет, таким образом, файлы от старого пакета не будут мёртвым грузом висеть в
ваших каталогах. Если имя обновляемого пакета изменилось, воспользуйтесь
вторым вариантом обращения к программе, указав имя старого
пакета (который установлен в системе) и после знака процента имя нового
пакета (который вы устанавливаете) .
Если вы указали переменную окружения ROOT, до выполнения removepkg,
то путь, указанный в переменной будет использован вместо корневого каталога.
Это полезно для настройки новых дисков для вашего корневого каталога. Они
обычно будут смонтированы к /mnt или что-то другое, отличное
от /.
upgradepkg не безупречна. Вам всегда следует создавать копии ваших
конфигурационных файлов. Если они будут переписаны, у вас всё ещё будет
копия оригиналов.
Как и с installpkg и removepkg, вы можете указать несколько
пакетов, или использовать шаблоны для имён пакетов.
rpm2tgz/rpm2targz
Red Hat Package Manager это популярный сегодня тип системы пакетов. Многие
производители программ предоставляют свои программы в RPM формате. Так как
это не наш родной формат, мы не рекомендуем нашим пользователям использовать их.
Тем не менее, некоторые вещи доступны только в RPM (даже исходники).
Мы предоставляем программы, которая конвертирует RPM пакеты в наш
родной .tgz формат28. Это позволит вам распаковать пакет
(скажем, при помощи explodepkg ) в временный каталог и исследовать
содержимое.
Программа rpm2tgz создаст Slackware пакет с .tgz
расширением, а rpm2targz создаст архив с .tar.gz расширением.
5.9.3 Создание пакетов
Создание Slackware пакетов может быть, как простым, так и сложным. Нет
специфического метода создания пакетов. Единственное требование это то, что
пакет должен быть tar gziped файл, и если нужен после-установочный
скрипт, он должен быть в каталоге /install/doinst.sh.
Если вы заинтересованы в создании пакетов для вашей системы, или для сети,
которую вы обслуживаете, вам следует посмотреть на различные build
скрипты в дереве каталогов исходников Slackware. Есть несколько методов,
которые мы используем для создания пакетов.
explodepkg
explodepkg (8) проделает то же, что installpkg
делает при распаковке пакета, но на самом деле не установит сам пакет, и не
произведёт никаких изменений в базе данных пакетов. Она просто развернёт
содержимое пакета в текущий каталог.
Если вы посмотрите На дерево каталогов исходников Slackware, вы увидите, как
мы используем эту команду для ''структурных'' пакетов. Эти пакеты содержат
скелет того, как конечный пакет будет выглядеть. Они хранят все необходимые
имена файлов (нулевой длины), права доступа и принадлежности. build скрипт
проделает cat с содержанием пакета из исходного каталога в build
каталог пакета.
makepkg
makepkg(8) запакует текущий каталог в формат Slackware package. Она найдёт
все символьные ссылки в дереве и добавит блоки их создания в пост-установочный
скрипт пакета. Так же программа выдаст сообщение, если обнаружит файлы нулевой
длины в дереве пакета.
Эта программа обычно выполняется после того, как вы создали дерево вашего пакета.
5.9.4 Создание tags и tagfiles (для программы установки)
Программа установки Slackware производит установку пакетов программ в вашу
систему. Существуют так же файлы, которые говорят программе установки,
какие из файлов должны быть установлены, какие из них необязательны, и какие по
умолчанию должны быть выбраны программой установки.
tagfile находится в каталоге первой серии программ и называется
tagfile. Он перечисляет пакеты различных дисков и их статус. Статус
может быть:
Опция | Действие |
ADD | Пакет необходим для нормальной работы системы |
SKP | Пакет будет автоматически пропущен |
REC | Пакет не является необходимым, но рекомендован |
OPT | Пакет необязателен
|
Table 5.8: Опции статуса tagfile
Формат прост:
Один пакет на строчку. Оригинальные tagfiles для каждого раздела
программ хранятся в tagfile.org. Так что если вы запутались со своими,
вы можете восстановить оригинальные.
Многие администраторы предпочитают писать свои собственные tagfiles
и затем при установке просто нажимают ''full''. Программа установки прочтёт
tagfiles и произведёт установку в соответствии с их содержанием.Если
вы используете REC или OPT, то появится окно диалога, которое спросит, следует
ли устанавливать этот отдельный пакет. Поэтому рекомендуется использовать ADD и
SKP, если вы пишите tagfiles для автоматизированной установки.
Просто убедитесь, что ваши tagfiles будут расположены в тех же
местах, что и оригинальные. Или вы можете так же выбрать ''указать специфический
путь к пользовательскому tagfile''.
Теперь вы должны быть знакомы с идеей пакетов программ и как они используются
в Slackware. Вы должны быть знакомы с различными утилитами управления
пакетами и знать, как использовать их. Наиболее важные моменты этого раздела,
это установка, удаление и обновление пакетов. Это и есть наиболее частое
применение утилит пакетов. Так же вы должны иметь хоть общее
представление о том, как создаются и проверяются пакеты.
File translated from
TEX
by
TTH,
version 2.89. On 24 Apr 2001, 16:43.
|