CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
26.03.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Дистрибутивы :: Zenwalk

Zenwalk: управление пакетами

Система управления пакетами – это то, что больше всего выделяет Slackware, прародителя Zenwalk, в ряду всех других дистрибутивов. Часто говорят, что в Slackware нет системы управления пакетами вообще. Это утверждение позорно и преступно: такая система там есть. Другое дело, что она резко отличается от всех остальных тем, что разрешением зависимостей каждого устанавливаемого пакета пользователь должен заниматься самостоятельно, в индивидуальном порядке. Само по себе это не хорошо, и не плохо – это, как говорил Остап Бендер, медицинский факт. И именно этим фактом руководствуются многие пользователи, выбирающие Slackware в качестве основной системы. Тем же, кому ручное разрешение зависимостей не нравится, вольно прикрутить к этому дистрибутиву чуть ли ни любую стороннюю систему пакетного менеджмента, благо формат пакетов его этому ничуть не препятствует.

Ибо формат пакетов Slackware прост, как правда: это просто скомпилированные из авторского пакета исходных текстов (возможно, с наложением собственных патчей) бинарники со всеми сопутствующими компонентами, типа man-страниц и прочей документации, сопровождаемые (не обязательно) сценариями установки и удаления. Все это затарено посредсвом tar и запаковано с помощью gzip – традиционно пакеты Slackware имеют суффикс tgz. Никакой метаинформации (в частности, сведений о зависимостях) внутри самого пакета не имеется.

Именно из-за стерильности в отношении зависимостей к пакетам Slackware так просто прикрутить любую систему управления пакетами – собственный swart, адаптированный для нее механизм apt – slapt, packman из Archlinux. Не говоря уже о портах FreeBSD и pkgsrc от NetBSD – но это немного другая история.

Возникает резонный вопрос – а откуда системы управления пакетами берут информацию о зависимостях, если внутри самого пакета на нее нет и намека. Ответ прост – из внешних файлов, к пакету прилагаемых, и из описаний репозиториев. Как? Это и будет рассмотрено на примере netpkg, фирменной системы пакетного менеджмента дистрибутива Zenwalk.

Каждый пакет Zenwalk включает в себя четыре компонента: собственно тарбалл пакета – pkg_name-#.##.i486.tgz текстовый файл с описанием пакета – pkg_name-#.##.i486.txt файл вида pkg_name-#.##.i486.dep – вопреки тому, что можно было бы подумать, судя по суффиксу, он, как правило, пуст и, наконец, собственно файл с метаинформацией – pkg_name-#.##.i486.meta.

Именно в последнем и перечисляются пакеты, необходимые для установки данного, то есть связанные с ним жесткими зависимостями (PACKAGE REQUIRED), пакеты, способствующие его функциональности – то есть связанные зависимостями мягкими (PACKAGE SUGGESTS), и пакеты конфликтующие (PACKAGE CONFLICTS).

Эти четыре файла для каждого пакета помещаются в сетевые репозитории. Структура каждого репозитория включает следующие подкаталоги:

  • a/ - приложения базовой системы
  • ap/ - дополнительные приложения текстового режима
  • d/ - средства разработки
  • l/ - основные системные библиотеки
  • n/ - сетевые средства
  • x/ - пакеты, составляющие оконную систему X
  • xap/ - приложения графического режима

Кроме того, имеется еще подкаталог extra – в него включены те приложения, которые не входят в базовый комплект дистрибутива, такие, как KDE, OpenOffice.org, дополнительные библиотеки, шрифты, средства локализации, и так далее. Организован он аналогично корню репозитория, включая одноименные каталоги (a/, ap/ и так далее) и несколько дополнительных, таких, как kde/, games/ и так далее.

В каждом из подкаталогов репозитория имеется файл PACKAGES – это перечень содержащихся в нем пакетов.

Корень репозитория содержит, кроме подкаталогов, четыре файла:

  • CHECKSUMS.md5
  • PACKAGES.TXT
  • CHECKSUMS.md5.gz
  • PACKAGES.TXT.gz

Первый – это список контрольных сумм всех пакетов, входящих в репозиторий. Второй – совокупность всех файлов *.meta из каждого пакета репозитория. Ну а два последних, как легко догадаться, просто их компрессированные аналоги.

Список доступных репозиториев содержится в файле /etc/netpkg.conf, к рассмотрению которого мы обратимся чуть позже. А пока – посмотрим, как же на практике осуществляется управление пакетами из сетевых репозиториев.

В Zenwalk этой цели служит специальная утилита, которая называется netpkg. Разумеется, можно воспользоваться и традиционным Slackware'вским pkgtool – но тогда и зависимости придется разруливать руками, полагаясь на то, что нет Боха, кроме Патрега, а pkgtool – Пророк его.

А с netpkg обращаться очень просто. Для установки единичного пакета достаточно набрать в командной строке

$  netpkg имя_пакета

без указания пути, версии, суффикса и тому подобной атрибутики. После нажатия на Enter последует сообщение о том, что для удовлетворения зависимостей данного пакета требуется то-то и то-то. Если с этим согласиться, необходимые для разрешения зависимостей пакеты будут установлены автоматически. Если отказаться – установка прервется.

Можно видеть, что обращение с netpkg – точно такое же, как с Debian'овским apt-get или pacman из Archlinux, только еще проще – утилита нашего дистрибутива имеет всего шесть опций:

  • upgrade – тотальное обновление системы, действует аналогично apt-get dist-upgrade в Debian'е и его клонах, или pacman -Syu в Archlinux;
  • download – скачивание файлов из репозитория и помещение их в локальный кэш с сортировкой по категориям, принятым в Zenwalk (о них было сказано ранее);
  • list – вывод полного списка пакетов, имеющихся в репозитории, с указанием их статуса: I – установленный, U – подлежащий обновлению, D - «откатываемый» на более старую версию, N – не установленный (то есть новый);
  • dotnew – замена текущего конфигурационного файла /etc/netpkg.conf новой версией;
  • mirror – выбор одного из доступных репозиториев (какой репозиторий использовать по умолчанию – запрашивается при первом запуске netpkg).

Сами по себе доступные репозитории, как уже говорилось, перечислены в файле /etc/netpkg.conf – настало время рассмотреть его структуру подробнее. Он состоит из нескольких секций. В первой

# Current : tested package remositories

перечислены главные репозитории дистрибутива Zenwalk в следующем виде:

Internet_mirror = http://zen-repo.meticul.eu/i486/current

и так далее (минимально необходимый список создается при инсталляции автоматически).

Вторая секция -

# Extra : addon packages

перечисляет репозитории с дополнительными (то есть выходящими за пределы базовой установки) пакетами (такими, как KDE) и имеет тот же формат:

Internet_mirror = http://linuxpackages.telecoms.bg/Zenwalk

Дистрибутив Zenwalk допускает использование не только собственных репозиториев пакетов, но и хранилищ материнской системы (Slackware), а также и любых других произвольных коллекций пакетов подходящего формата. Список таких стронних репозиториев содержится в секции

# Misc package remositories

где можно видеть, например, строки типа

Internet_mirror = http://slackware.mirrors.tds.net/pub/slackware/slackware-current/slackware

описывающую путь к официальному репозиторию Slackware,

Internet_mirror = http://users.zenwalk.org/packages

где наличествуют собранные пользователями пакеты, и так далее.

Правда, при этом следует помнить, что зависимости, скорее всего, придется разрешать вручную, да и конфликты версий не исключены.

Следующая секция описывает параметры прокси-сервера – его адрес, имя пользователя, пароль. При необходимости заполняется вручную – по умолчанию значения всех строк пусты.

Далее идет группа строк, определяющих местоположение базы данных установленных пакетов, по умолчанию -

Package_logs = /var/log/packages

что изменять категорически не рекомендуется, указывающая, сохранять ли скачанные при установке пакеты в локальном репозитории -

Keep_packages = yes

(очевидно, что если такой необходимости нет, значение следует заменить на no), и местоположение локального репозитория -

Local_repository = /var/packages

В последнюю секцию можно объединить группу строк разного назначения. Например, блэк-лист – перечень пакетов, которые не будут обновляться ни автоматически, через netpkg upgrade, ни при явном их указании – netpkg имя_пакета: их необходимо скачать и установить вручную. В этот перечень входит, в частности, все, что относится к ядру – сам образ его, исходники и заголовки.

В следующей строке

Protected_files = 

можно видеть перечень конфигурационных файлов, которые не будут изменяться при автоматическом обновлении пакетов или системы в целом. По умолчанию он включает такие конфиги, как /etc/lilo.conf, /etc/fstab, /etc/passwd, /etc/shadow, /etc/group, и так далее.

И, наконец, строка, определяющая, следует ли выводить информацию о зависимостях при установке пакета:

Handle_dependencies = yes 

Вполне очевидно, что, если заменить значение ее на no, то все связанные зависимостями пакеты будут устанавливаться автоматически.

Из сказанного ясно, что использование утилиты netpkg и ее настройка предельно просты. Что, естественно, компенсируется и ограниченностью ее возможностей в сравнении с аналогами – такими, как pacman и тем более apt-get. В частности, в ней мы не увидим изощренных способов поиска пакетов – единственным доступным методом сортировки оных является фильтрация по статусу. Для чего служат опции оного – I, U, N, D, - перечисленные ранее. То есть для вывода всех установленных пакетов служит команда

netpkg list -I 

и так далее. Более же точный поиск возможен только с помощью командного конвейера вида

netpkg list | grep [набор символов]

В некоторой мере эта ограниченность возможностей преодолевается посредством графического фронт-энда к netkpg, носящего то же имя и вызываемого из Zenpanel (рис. 1). Эта программа имеет удобные средства поиска пакетов по имени, фильтрации по статусу, переключения репозиторие и обработки их списка (добавления, удаления, редактирования – рис. 2).

Использование ее предельно просто. Единственное, что следует иметь ввиду при этом – то, что зависимости пакетов она устанавливает автоматически, без запроса и вывода каких-либо сообщений. Поэтому я, например, для инсталляции пакетов все-таки предпочитаю текстовый вариант netpkg (хотя всё, что фигурирует в зависимостях пакетов Zenwalk, так или иначе подлежит инсталляции, но знание того, что именно устанавливается, мне лишним не кажется). А вот во всех остальных случаях – удалении пакетов и, тем более, их поиске, я полагаюсь на графический фронт-энд.

Наконец, главный недостаток как самой утилиты netpkg, так и ее фронт-энда – невозможность установки пакетов с локального носителя: как и следует из ее названия, она приспособлена только для работы по Сети.

Вот, пожалуй, и все, что следует знать начинающему пользователю Zenwalk об управлении пакетами в этом дистрибутиве. В одной из ближайших заметок я надеюсь рассказать о том, как создавать пакеты самостоятельно. По сравнению с материнской системой, сиречь Slackware, специфики тут не много, но тем не менее, она есть.




Комментарии

Alex87, Wed Oct 7 06:35:21 2009:
Попробовал на виртуальной машине - некомфортно как-то, ощущение того что недоделана система.
P.S.
Ядро генту через porteg кто-нибудь ставил в слаку?
аноним, Sat Aug 29 22:56:46 2009:
Слакбилд для zenwalk чем-нибудь отличается от слакбилда для slackware(как например слакбилд MOPSLinux и Slackware)?
аноним, Sat Feb 14 18:14:47 2009:
Ну скажите, как его вообще теперь использовать?

Уже нет слов - долблю со злости по клавишам. Мало того, что недоделанный xfce, тормозит, тянет за собой гномий мешок, так после каждого обновления приходится ковыряться и из бекапа вновь перезаписывать такие файлы, как рутовый .bashrc... Кому он то жить не дает?

Вот и сегодня обновился - moc (Music on Console) не находит общие библиотеки, iceweasel замучал падать. Зла не хватает. Стираю нах.
Zenwalker, Sat Feb 14 16:00:55 2009:
Спасибо за статьи! Только, только начал приобщатся! :))) Ещё много непонятного, но думаю разберусь!!!!!
Nimble, Sun Aug 31 15:36:05 2008:
я так понял что обычные слаковские репы можно использовать. тогда можно ли подключить реп slacky.eu ??? возникнут ли какие проблемы?
Олег ОФТ, Mon Aug 20 08:26:13 2007:
Спасибо за статью!

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds