Welcome to the Slackware Documentation Project

Это старая версия документа.


Управление пакетами

WIP
Work in progress.
В процессе перевода.

Управление пакетами является неотъемлемой частью любого дистрибутива Linux. Программное обеспечение в составе Slackware, как и многие сторонние инструменты, распространяется в виде исходного кода, который может быть скомпилирован, но процесс компиляции тысяч различных приложений и библиотек длителен и скучен. Поэтому многие предпочитают устанавливать уже скомпилированные пакеты программ. Фактически, при установке Slackware основная работа программы setup состоит в обработке списка пакетов инструментами управления пакетами. Далее мы рассмотрим различные инструменты, используемые для работы с пакетами Slackware.

pkgtool

Самый простой способ выполнения задач обслуживания пакетов – вызвать pkgtool(8), управляемый меню интерфейс к другим инструментам. pkgtool позволяет вам установить или удалить пакеты, а также посмотреть содержимое пакетов и список установленных пакетов в удобном интерфейсе ncurses.

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.

In the past, all Slackware packages were compressed with the gzip(1) compression utility, which was a good compromise between compression speed and size. Recently, new compression schemes have been added and the package management tools have been upgraded to handle these. Today, official Slackware packages are compressed with the xz utility and end with .txz extensions.Older packages (and many third party packages) still use the .tgz extension.

Стоит подчеркнуть, что расширения .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 базовой установки.

Just as you are able to use installpkg to install Slackware packages from the /extra directory included on the install media, you can use slackpkg to pull packages from the Internet and install them. This is particularly useful for security updates or significant application upgrades that are posted to the Slackware servers, some of which you may want to start using on your own system.

Without slackpkg, the process would be:

  1. Notice in the Slackware changelog that an update has been released.
  2. Look on your local Slackware mirror to find a download link of the package.
  3. Download the package from a Slackware mirror to your hard drive.
  4. Use either installpkg or pkgtool to install the downloaded package.

With slackpkg, this is reduced to:

  1. Notice in the Slackware changelog that an update for foo has been released.
  2. slackpkg install foo

Clearly, this streamlines a fairly common task.

To use slackpkg, configure your system with a Slackware mirror by editing /etc/slackpkg/mirrors as root. Find the mirror that is associated with your Slackware version and architecture, and uncomment it. This list of mirrors offers ftp and http access, but you must uncomment only one mirror.

Once a mirror has been selected, update the list of remote files by issuing the initial command slackpkg update. This should be done any time you notice that a new package has been posted (regularly checking in with the Slackware changelog is recommended; see Chapter 18, Keeping Track of Updates for more information).

To search for a package, use slackpkg search foo, and to install use slackpkg install foo.

Once a package has been installed with slackpkg, it can be removed or upgraded using pkgtool and the other package management commands as detailed inInstalling, Removing, and Upgrading Packages.

For more information see the man pages for slackpkg(8) and slackpkg.conf(5), and see its website at http://www.slackpkg.org/

rpm2tgz

One of the most ubiquitous package formats for Linux software is RPM; it's not uncommon to find a developer offering their application for download as either source code or an RPM file, and no more. In this case, you would have three options:

  1. Build your own Slackware package.
  2. Compile and install directly from source code.
  3. Convert and install from RPM.

Building from source code or creating your own Slackware package is usually not as complex as you might think but installing directly from source code is generally discouraged because there is no easy way to track what has been installed on your system after issuing the make install command. Building your own Slackware packages is outside the scope of this chapter. So this leaves us with the helpful tool rpm2tgz.

rpm2tgz converts RPM packages into a Slackware package that can then be installed via pkgtool or installpkg. This circumvents the need to create your own Slackware package but grants you the benefit of being able to remove, update, and track what you've installed.

While a Slackware package is just a shell script and source code, an RPM package can by comparison be a maze of dependency listings and special instructions. Therefore, rpm2tgz will not always work, especially on very complex applications, and it will never magically resolve dependencies.

To try rpm2tgz, download an RPM file from a trusted source and convert it:

rpm2tgz foo-x.x.xx.rpm

The result is a .tgz file, so after the conversion is finished, the original RPM can safely be discarded. Use installpkg to install the Slackware package you've just created, provided that you've installed all dependency code for the application to actually function.

Навигация по главам

Предыдущая глава: Основные сетевые утилиты

Следующая глава: Отслеживание обновлений

Источники

  • Авторы: Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson


На других языках
Перевод этой страницы?:
QR Code
QR Code ru:slackbook:package_management (generated for current page)