====== Управление пакетами ======
Управление пакетами является неотъемлемой частью любого дистрибутива Linux.
Программное обеспечение в составе Slackware, как и многие сторонние
инструменты, распространяется в виде исходного кода, который может быть
скомпилирован, но процесс компиляции тысяч различных приложений и библиотек
длителен и скучен. Поэтому многие предпочитают устанавливать уже
скомпилированные пакеты программ. Фактически, при установке Slackware
основная работа программы **//setup//** состоит в обработке списка
пакетов инструментами управления пакетами. Далее мы рассмотрим различные
инструменты, используемые для работы с пакетами Slackware.
===== pkgtool =====
Самый простой способ выполнения задач обслуживания пакетов -- вызвать
**//pkgtool//**(8), управляемый меню интерфейс к другим инструментам.
**//pkgtool//** позволяет вам установить или удалить пакеты, а также
посмотреть содержимое пакетов и список установленных пакетов в удобном
интерфейсе ncurses.
{{ :slackbook:pkgtool.png?550 |pkgtool}}
**//pkgtool//** -- удобный и простой способ выполнения большинства базовых
задач, но более продвинутые задачи требуют более гибких инструментов.
===== Установка, удаление и обновление пакетов =====
Хотя **//pkgtool//** лидирует по удобству, **//installpkg//**(8) способен
справиться с нештатными задачами, такими как быстрая установка пакета,
установка целого набора пакетов или создание сценария установки.
**//installpkg//** принимает список пакетов для установки и устанавливает
их без дополнительных вопросов. Как и все инструменты управления пакетами
Slackware, он полагает, что вы знаете, что делаете, и не пытается быть умнее
вас. В простейшем варианте **//installpkg//** просто принимает список пакетов
для установки и делает в точности то, что от него ожидалось.
darkstar:~# installpkg blackbox-0.70.1-i486-2.txz
Verifying package blackbox-0.70.1-i486-2.txz.
Installing package blackbox-0.70.1-i486-2.txz:
PACKAGE DESCRIPTION:
# blackbox (Blackbox window manager)
#
# Blackbox is that fast, light window manager you have been looking for
# without all those annoying library dependencies.
#
# Also included in this package is the bbkeys utility for controlling
# keyboard shortcut commands from within Blackbox.
#
# The Blackbox home page is http://blackboxwm.sourceforge.net
#
Package blackbox-0.70.1-i486-2.txz installed.
Конечно, можно устанавливать несколько пакетов разом при помощи символов
подстановки оболочки. Следующая команда установит со смонтированного CD-ROM
серию //«N»// целиком:
darkstar:~# installpkg /mnt/cdrom/slackware/n/*.t?z
В любое время можно посмотреть список установленных пакетов, получив список
файлов каталога /var/log/packages, который содержит не только имена каждого
приложения в системе, но и их версии. Чтобы узнать, какие файлы были
установлены из этого пакета, посмотрите содержимое, например, при помощи
**//cat//**:
darkstar:~#cat /var/log/packages/foo-1.0-x86_64-1
Команда покажет размеры упакованного и распакованного пакета, его описание,
имя и расположение каждого файла в пакете.
Удаление пакета даже проще установки. Команда удаления, как и ожидалось,
**//removepkg//**(8). Просто укажите ей, какие пакеты удалить, и
**//removepkg//** проверит содержимое базы данных и удалит все файлы и
каталоги этого пакета с одной оговоркой. Если этот файл входит в несколько
установленных пакетов, он будет пропущен, и, если в каталоге есть новые
файлы, каталог будет оставлен на месте. Поэтому удаление пакетов дольше,
чем их установка.
darkstar:~# removepkg blackbox-0.70.1-i486-2.txz
Наконец, обновление пакета (как вы уже, наверное, догадались) выполняет
**//upgradepkg//**(8), который сперва устанавливает новый пакет, затем
удаляет файлы и каталоги, оставшиеся от прежнего пакета. Нужно запомнить
одну важную вещь -- **//upgradepkg//** не проверяет, что номер версии
установленного пакета выше, чем у //«нового»//, поэтому подходит и для
установки предыдущих версий.
darkstar:~# upgradepkg blackbox-0.70.1-i486-2.txz
+==============================================================================
| Upgrading blackbox-0.65.0-x86_64-4 package using
./blackbox-0.70.1-i486-2.txz
+==============================================================================
Pre-installing package blackbox-0.70.1-i486-2...
Removing package
/var/log/packages/blackbox-0.65.0-x86_64-4-upgraded-2010-02-23,16:50:51...
--> Deleting symlink /usr/share/blackbox/nls/POSIX
--> Deleting symlink /usr/share/blackbox/nls/US_ASCII
--> Deleting symlink /usr/share/blackbox/nls/de
--> Deleting symlink /usr/share/blackbox/nls/en
--> Deleting symlink /usr/share/blackbox/nls/en_GB
...
Package blackbox-0.65.0-x86_64-4 upgraded with new package
./blackbox-0.70.1-i486-2.txz.
Всех эти инструменты принимают полезные параметры. Например, //--root//
позволяет **//installpkg//** устанавливать пакеты в произвольный каталог.
Параметр //--dry-run// указывает **//upgradepkg//** вывести, что им будет
предпринято, без фактического внесения изменений в систему. За подробной
информацией (как всегда) обратитесь к страницам руководств man.
===== Форматы сжатия пакетов =====
В прошлом все пакеты Slackware были сжаты утилитой сжатия **//gzip//**(1),
что было хорошим компромиссом между скоростью сжатия и размером. Позже были
разработаны новые схемы сжатия, которые получили поддержку и в инструментах
управления пакетами. Сейчас официальные пакеты Slackware сжаты утилитой
**//xz//** и имеют расширение .txz. Прежние (и многие сторонние пакеты) всё
ещё используют расширение .tgz.
Стоит подчеркнуть, что расширения .tgz и .txz (если короче, файлы .t?z)
общеупотребительные неуникальные расширения для для сжатых файлов .tar.
В этом много преимуществ, их легко собрать на почти любой системе UNIX
(многие другие форматы пакетов требуют специальных инструментов) и также
просто разобрать.
Тем не менее, важно понимать, что хотя все пакеты Slackware **являются**
файлами .t?z, но обратное неверно, не все .t?z файлы являются пакетами
Slackware. **//installpkg//** не умеет волшебным образом устанавливать
произвольные файлы .t?z, только пакеты Slackware.
==== slackpkg ====
**//slackpkg//** -- это автоматизированный инструмент для управления пакетами
Slackware. Он впервые был включён в /extra в Slackware-12.1, а начиная с
выпуска Slackware-12.2 поставляется в наборе /ap базовой установки.
**//slackpkg//** можно использовать для загрузки пакета из Интернет и
установки также, как используете **//installpkg//** для установки пакетов
Slackware из каталога /extra установочного диска. Это особенно полезно для
обновлений безопасности или важных обновлений приложений, опубликованных на
серверах Slackware, некоторые из которых вы можете захотеть использовать на
своей системе.
Без **//slackpkg//** процесс мог быть таким:
- Обнаружить в журнале изменений Slackware выпуск обновления.
- Посмотреть на используемом зеркале Slackware ссылку для загрузки пакета.
- Загрузить пакет с зеркала Slackware на жёсткий диск.
- Применить **//installpkg//** или **//pkgtool//** для установки загруженного пакета.
При помощи **//slackpkg//** он сокращается до:
- Обнаружить в журнале изменений Slackware выпуск обновления для **//foo//**.
- **slackpkg** //install// foo
Очевидно, что это упрощает довольно распространённую задачу.
Для использования **//slackpkg//** настройте систему на использование зеркала
Slackware, отредактировав от root ''/etc/slackpkg/mirrors''. Найдите зеркало,
соответствующее версии и архитектуре Slackware, и раскомментируйте его. Этот
список зеркал предлагает доступ по HTTP и FTP, но раскомментированным должно
быть **только одно** зеркало.
После выбора зеркала обновите список файлов сервера командой
''slackpkg update''. Это нужно проделывать при выпуске новых пакетов
(рекомендуется регулярная проверка журнала изменений Slackware, дополнительную
информацию см. в [[ru:slackbook:tracking_updates|главе 18 «Отслеживание
обновлений»]]).
Для поиска пакета используйте ''slackpkg search foo'', для установки --
''slackpkg install foo''.
После установки пакета при помощи **//slackpkg//**, его можно удалить или
обновить при помощи **//pkgtool//** или других команд управления пакетами
как описано в разделе «[[#установка_удаление_и_обновление_пакетов|Установка,
удаление и обновление пакетов]]».
Дополнительную информацию смотрите на страницах руководств **//man//**
slackpkg(8) и slackpkg.conf(5), а также на вебсайте [[
http://www.slackpkg.org/|http://www.slackpkg.org/]].
==== rpm2tgz ====
Одним из самых распространённых форматов пакетов программ для Linux является
RPM; нередко разработчики предлагают свои приложения для загрузки только как
исходный код или файл RPM. В этом случае у вас есть три варианта:
- Собрать собственный пакет Slackware.
- Скомпилировать и установить прямо из исходного кода.
- Сконвертировать установку из RPM.
Сборка из исходного кода или создание собственного пакета Slackware обычно
не столь сложно, как можно подумать, а установка прямо из исходного кода не
рекомендуется из-за отсутствия простого способа отслеживания того, что было
установлено в систему после выполнения команды ''make install''. Создание
пакетов Slackware выходит за рамки настоящей главы. Остаётся использование
полезной утилиты **//rpm2tgz//**.
**//rpm2tgz//** преобразует пакет RPM в пакет Slackware, который затем может
быть установлен при помощи **//pkgtool//** или **//installpkg//**. Это, с
одной стороны, избавляет от сборки собственного пакета Slackware, а с другой
-- предоставляет возможность удалять, обновлять и отслеживать установленное.
Пакет Slackware является архивом бинарных файлов с установочным сценарием,
пакет RPM помимо этого содержит списки зависимостей и специальные сценарии.
Поэтому **//rpm2tgz//** срабатывает не всегда, особенно на очень сложных
приложениях, а также никогда не обрабатывает зависимости волшебным образом.
Чтобы попробовать **//rpm2tgz//**, загрузите из доверенного источника файл
RPM и сконвертируйте его:
rpm2tgz foo-x.x.xx.rpm
Результатом будет файл .tgz, поэтому оригинальный RPM после преобразования
может быть удалён. Для установки только что полученного пакета Slackware
используйте **//installpkg//**, равно как для установки всех других
пакетов, необходимых приложению для работы.
====== Навигация по главам ======
**Предыдущая глава: [[ru:slackbook:basic_networking_utilities|Основные сетевые утилиты]]**
**Следующая глава: [[ru:slackbook:tracking_updates|Отслеживание обновлений]]**
====== Источники ======
* Источник: [[http://www.slackbook.org/beta]] \\
* Авторы: Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson
* Перевод: [[wiki:user:bormant | Serg Bormant]]
{{tag>slackbook package_management pkgtool slackpkg rpm2tgz}}