CHECKSUMS.md5 CHECKSUMS.md5.asc FILE_LIST MANIFEST.bz2 PACKAGES.TXT
Рисунок 6-2. Ветка репозитория Salix, заимствованная из прародительского дистрибутива
Важнейшим из них является файл PACKAGES.TXT, содержащий перечень всех пакетов с характеристикой каждого – той самой, которое выводит команда slapt-get при указании цели show и имени пакета. Например, для пакета zsh она выглядит так:
PACKAGE NAME: zsh-5.0.2-x86_64-1.txz PACKAGE LOCATION: ./slackware64/ap PACKAGE SIZE (compressed): 2428 K PACKAGE SIZE (uncompressed): 9340 K PACKAGE REQUIRED: gdbm,ncurses PACKAGE CONFLICTS: PACKAGE SUGGESTS: PACKAGE DESCRIPTION: zsh: zsh (the Z shell) zsh: zsh: Zsh is a UNIX command interpreter (shell) which of the standard shells zsh: most resembles the Korn shell (ksh), although it is not completely zsh: compatible. It includes enhancements of many types, notably in the zsh: command-line editor, options for customizing its behavior, filename zsh: globbing, features to make C-shell (csh) users feel more at home and zsh: extra features drawn from tcsh (another 'custom' shell). Zsh waszsh: written by Paul Falstad. zsh:
Остальные файлы каталога, а их может быть больше, чем приведено на скришноте, также важны. Так, файл, CHECKSUMS.md5 содержит контрольные суммы файлов, подтверждающие их «неизменность», файл GPG-KEY, расположенный в родительском каталоге, включает ключи, удостоверяющие их «подлинность», и так далее. Однако именно наличие файла PACKAGES.TXT волшебным образом превращает обычный каталог с файлами пакетов на локальном диске или удалённом сервере в их репозиторий.
Переходим глубже, в подкаталог одной из серий – и там видим уже собственно файлы пакетов и по два файла со служебной информацией. Например, для того же пакета zsh (в серии ap) они таковы:
• zsh-5.0.2-x86_64-1.txz – архив с бинарным исполняемым файлов, документацией и прочими компонентами пакета;
• zsh-5.0.2-x86_64-1.txt – краткое описание пакета;
• zsh-5.0.2-x86_64-1.txz.asc – контрольная сумма для проверки целостности архива.
Всё – больше никакой информации в репозитории Slackware вроде бы не содержится. В том числе – и никакой информации о зависимостях пакетов.
Теперь обратимся к дистрибутив-специфичной ветке репозитория Salix, то есть к каталогу /x86_64/14.1. Он содержит пакеты, либо отсутствующие в официальном репозитории Slackware (например, slapt-get, описанный в пятой части цикла, его графическую оболочкуGslapt, о которой речь пойдёт в части седьмой, и некоторые другие), либо пакеты, которые разработчики дистрибутива по тем или иным причинам сочли необходимым собрать по своему (например, mozille-firefox). Здесь мы видим те же служебные файлы PACKAGES.TXT с «аннотированным» списком пакетов, GPG-KEY с колючами, ChangeLog.txt с описанием обновлений репозитория, и другие.
Рисунок 6-3. Дистрибутив-специфическая ветка репозитория Salix
Отправившись «глубже», в подкаталог salix, можно обнаружить серии пакетов, в том числе и специфические для дистрибутива, например, серию mate, а в ней – отдельные пакеты. Но здесь на каждый индивидуальный пакет приходится уже пять файлов. Например, для пакета caja (файловый менеджер – форк Nautilus из GNOME2) это будут:
caja-extensions-1.8.0-x86_64-1gv.dep caja-extensions-1.8.0-x86_64-1gv.md5 caja-extensions-1.8.0-x86_64-1gv.meta caja-extensions-1.8.0-x86_64-1gv.txt caja-extensions-1.8.0-x86_64-1gv.tx
Содержимое трёх из них (*.txz, *.txt и *.md5) мы уже знаем, а что же такое файлы *.dep и *.meta? Узнать это легко, если их просмотреть. Первый – это описание тех самых пресловутых зависимостей для пакета:
atk,bzip2,cairo,cxxlibs|gcc-g++,dconf...
А файл *.meta – результирующая метаинформация:
PACKAGE NAME: caja-extensions-1.8.0-x86_64-1gv.txzPACKAGE LOCATION: ./salix/mate PACKAGE SIZE (compressed): 78 K PACKAGE SIZE (uncompressed): 312 K PACKAGE REQUIRED: atk,bzip2,cairo,cxxlibs|gcc-g++,dconf,expat,fontconfig,freetype,gcc,gdk-pixbuf2,glib2,gtk+2,harfbuzz,icu4c,libX11,libXau,libXcomposite,
libXcursor,libXdamage,libXdmcp,libXext,libXfixes,libXi,libXinerama,libXrandr,libXrender,libXxf86vm,libdrm,libffi,libpng,libxcb,mate-desktop,mate-file-manager,mesa,pango,pixman,startup-notification,udev,xcb-util,zlib PACKAGE CONFLICTS: PACKAGE SUGGESTS: ...
Можно видеть, что она включает в себя не только «жёсткие» зависимости (PACKAGE REQUIRED), но может описывать и зависимости опциональные («мягкие» – PACKAGE SUGGESTS), а также конфликтующие пакеты, если те и другие имеются (в примере их нет). Именно благодаря этой метаинформации slapt-get может не только отслеживать зависимости пакетов при их установке, но и разрешать их автоматически.
И тут читатель вправе задать вопрос: если «специфическая» часть репозитория охватывает меньшинство пакетов Salix, а большинство их берётся с зеркала репозитория Slackware, то как зависимости контролируются для них? Ведь там в сериях пакетов мы не видели и намёка на описания зависимостей.
Для ответа на этот вопрос достаточно обратиться к каталогу /x86_64/slackware-14.1, родительскому по отношению к тому, что был приведён на рис. 2. И там обратить внимание на подкаталог dep.
Рисунок 6-4. Основные каталоги ветки Slackware
Зайдя в него, можно обнаружить множество файлов с маской *.dep – по суммарному количеству пакетов в ветке Slackware. В них-то и описаны зависимости для пакетов, заимствованных из прародительского репозитория, ни о каких зависимостях и не подозревающего. Например, в файле zsh.dep можно увидеть следующее: