Про Salix. Его пакеты

Алексей Федорчук

Когда эйфория от компактности базовой установки Salix’а проходит, начинаешь задумываться: а что же в этой замечательно компактной системе, полностью свободной от лишних пакетов, делать? Ответ очевиден: устанавливать пакеты не лишние. Что заставляет обратиться к средствам для работы с пакетами, имеющимся в этом дистрибутиве. А имеется имеется таковых две пары.

Первая пара — это консольная утилита slapt-get и графический фронт-энд к ней Gslapt. Они предназначены для манипуляции бинарными пакетами из собственных репозиториев Salix’а или любых других, совместимых со Slackware. Пара же вторая предназначена для работы со сценариями сборки пакетов из исходников, коллекции которых располагаются на сайте SlackBuild.org. Она включает консольную утилиту slapt-src и её графическую «морду» Sourcery.

Первые три инструмента не уникальны для Salix’а. Они были разработаны Язоном Вудвардом (Jason Woodward) для первозданной Slackware ещё в 2003-2005 годах, и с тех пор широко используются во многих происходящих от неё дистрибутивах. Авторство же Sourcery принадлежит Жоржу Влахавасу — первому разработчику SalixOS.

На этой и ближайших страницах я постараюсь рассказать конспективно о том, как перечисленные инструменты можно применить для доведения до ума базового Salix’а.

Начну, разумеется, со slapt-get‘а. Зная о нём понаслышке, я до сего дня полагал, что это нечто вроде apt-rpm — то есть адаптация утилит семейства APT для работы с пакетами другого формата. И, как оказалось, был не прав. Это скорее воспроизведение функциональности некоторых из них, реализованное совсем другим способом.

Начать с того, что slapt-get — один-единственный, ничего подобного apt-cache etc. здесь нет. Синтаксис его также иной: требуется указание так называемой цели (target — нечто вроде субкоманды) и, обычно (но не всегда), аргумента. Кроме того, предусмотрены и опции команды, из которых первейшей должна быть -h, --help, выводящая список всех целей и опций. Впрочем, то же самое происходит, если дать команду slapt-get без указания опций, цели и аргументов, а также при ошибке в синтаксисе.

Цели и опции в выводе -h сопровождаются описаниями — краткими, но прозрачно ясными. Причём в случае русской локали ещё и на языке родных осин. Поэтому я на них останавливаться не буду. Сделаю только оговорку на счёт стандартного отсыла за деталями — к тёте Мане. В случае русской локали (ru_RU.utf8 — а из числа русскоязычных только её и можно определить на стадии установки), если дать команду

$ man slapt-get

то вместо положенного по закону русского текста будет видна абракадабра. Это относится ко всем man-страницам за пределами группы (1) и связано с путаницей кодировок. О чём я напишу отдельно, как только разберусь до конца. А пока любителям подробностей предлагаю воспользоваться конструкцией

$ LANG=C man slapt-get

Дабы читать man-страницы хотя бы на английском, а не на смеси нижегородского с древнееврейским. Я же обращусь к практическим примерам.

Первое, что надо сделать по выходе из эйфории — это запустить такую команду:

$ sudo slapt-get -u

Она обновит сведения о все доступных пакетах, а откуда их возьмёт — скажу чуть позже. А пока прошу обратить внимание: в Salix’е, как и в Ubuntu, по умолчанию аккаунт администратора не задействован — то есть он есть, но пароля для доступа к нему нет. Поэтому все действия, требующие изменений файловой иерархии за пределами домашнего каталога пользователя, следует выполнять с помощью команды sudo. Поскольку таких действий впереди предстоит немало, есть смысл получить права root’а перманентно:

$ sudo -i

Далее я буду исходить из этого — символом чего будет приглашение командной строки в виде «решётки» #, а не милого сердцу простого пользователя бакса $. Нужно только не забыть по завершении разборок с пакетами сложить с себя административные полномочия командой

# exit

Теперь не вредно будет провести обновление установленных пакетов:

# slapt-get --upgrade

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

Дело вкуса, конечно, но я апгрейд пакетов предварил удалением ненужного. Правда, кандидат на удаление оказался только один — браузер Midori. Не то что он плох сам по себе — наоборот, его идея мне нравится. Но работоспособным его можно назвать только условно — за то короткое время, что я пытался с ним пообщаться, он умудрился упасть несколько раз. Хотя логику майнтайнеров понять можно — в отношении «тяжёлых» браузеров у применителя могут быть свои предпочтения, а оставлять его без браузера совсем, даже на короткое время, — антигуманно. Вот они и выбрали самый лёгкий и не отягощённый лишними зависимостями. Тем более, что ни одного браузера текстового режима в базовой установке нет.

Как бы то ни было, я дал такую команду:

# slapt-get --remove midori

Тем самым избавившись от единственного пакета, который мне не пригодился бы никогда. Это требовало скорейшей компенсации, и я стал устанавливать FireFox с пакетом его русификации. Для чего сначала определил их точные имена такой командой:

# slapt-get --search firefox

Которую, кстати можно было бы дать и от лица обычного пользователя — как и все вариации slapt-get‘а с «информационными» целями (--show, --list и так далее).

...
mozilla-firefox-24.1.0esr-x86_64-1 [inst=нет]: mozilla-firefox (Mozilla Firefox Web browser)
mozilla-firefox-24.3.0esr-x86_64-1_slack14.1 [inst=нет]: mozilla-firefox (Mozilla Firefox Web browser)
mozilla-firefox-24.4.0esr-x86_64-1gv [inst=нет]: mozilla-firefox (safe and easy web browser from Mozilla)
...
mozilla-firefox-l10n-ru-24esr-x86_64-2gv [inst=нет]: mozilla-firefox-l10n-ru Russian
...

Опять обращаю ваше внимание: в отличие от аналогичной команды apt-cache, в этом выводе нет краткого описания (резюме) пакетов. Но зато есть более важная информация — номера версии (а при необходимости и сборки — без её указания устанавливается последняя), имя для подстановки в качестве аргумента, а главное — статус пакетов: [inst=нет] или [inst=да]. Отсутствие последнего меня всегда раздражало в выводе apt-cache.

Далее я решил проделать эксперимент, и установку браузера начал «с конца»:

# slapt-get -i mozilla-firefox-l10n-ru

Для пользователей большинства пакетных дистрибутивов будет неожиданностью узнать, что пакет локализации при этом не потянул за собой сам FireFox, который пришлось устанавливать отдельно:

# slapt-get -i mozilla-firefox

Таково отношение slapt-get’а к зависимостям: ими считаются только абсолютно необходимые компоненты (в частности, те, что вытянул вслед за собой FireFox). А на использование пакета локализации у меня, теоретически рассуждая, могли быть какие-то свои виды, с ним никак не связанные.

И ещё раз внимание: цель -i, подобно ранее указывавшейся цели -u, как легко догадаться, являются краткими формами от полных --install и --update, соответственно. Которые тоже указывать не возбраняется, буде захочется потренировать пальцы.

Здесь уместно сказать о двух опциях, которые могут понадобиться в жизни. При установке пакета подтверждение на выполнение действий по умолчанию не запрашивается, а при удалении (и при тотальном апгрейде), напротив, требуется. Это положение можно изменить, указав в первом случае опцию --prompt (она же -p), во втором --no-prompt (или -y). Вторая явно не нужна (последний шанс подумать), а вот первая может и пригодиться.

Таким образом, предваряя инсталляцию поиском, можно устанавливать пакеты до тех пор, пока ответом на очередной поисковый запрос не будет возврат приглашения командной строки. Это означает, что искомого пакета нет в официальном репозитории Salix’а. Что делать? На этот вопрос, как обычно, есть два ответа:

  1. поискать недостающий пакет в других репозиториях — собственно Slackware и совместимых;
  2. обратиться к утилите slapt-src или её графическому фронт-энду Sourcery.

О первом пути — как-нибудь в другой раз. А вот второму будет посвящена следующая страница.

Оглавление