====== Управление пакетами ====== Управление пакетами является неотъемлемой частью любого дистрибутива 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}}