CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
24.05.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. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

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

Приложения :: Управление пакетами

Азбука deb-пакетного менеджмента: семейство утилит dpkg

На фоне своих блистательных сородичей - семейства apt-get и программы aptitude, - утилиты dpkg, предназначенные для работы с единичными deb-пакетами, выглядят весьма скромно. Однако они

  • были исторически первым средством автоматического развертывания пакетов, учитывающим их зависимости,
  • лежат в фундаменте все надстраивающих их систем (apt, aptitude, synaptic, adept),
  • в ряде случаев являются наиболее простым средством для установки или удаления пакета, а
  • также получения информации о нем, и, наконец,
  • оказываются незаменимыми при реконфигурировании пакетов установленных.

Вообще, возможности утилит семейства (см. man (1) dpkg) очень широки, и потому заслуживают рассмотрения, хотя бы в минимально необходимом для пользователя объеме.

Наиболее употребимые утилиты семейства - следующие:

  • собственно dpkg - средство для установки и удаления программ;
  • dpkg-query - инструмент создания запросов к базе данных deb-пакетов;
  • dpkg-reconfigure - программа для настройки установленных пакетов.

А вообще это семейство включает в себя множество команд - полный их список можно получить с помощью командной конструкции

$ а /а/linux/dpkg* && а /а/sbin/dpkg*

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

/usr/bin/dpkg                 /usr/bin/dpkg-gencontrol
/usr/bin/dpkg-architecture    /usr/bin/dpkg-name
/usr/bin/dpkg-buildpackage    /usr/bin/dpkg-parsechangelog
/usr/bin/dpkg-checkbuilddeps  /usr/bin/dpkg-query
/usr/bin/dpkg-deb             /usr/bin/dpkg-scanpackages
/usr/bin/dpkg-depcheck        /usr/bin/dpkg-scansources
/usr/bin/dpkg-distaddfile     /usr/bin/dpkg-shlibdeps
/usr/bin/dpkg-genbuilddeps    /usr/bin/dpkg-source
/usr/bin/dpkg-genchanges      /usr/bin/dpkg-split
/usr/sbin/dpkg-divert         /usr/sbin/dpkg-reconfigure
/usr/sbin/dpkg-preconfigure   /usr/sbin/dpkg-statoverride

Они входят в состав пакетов dpkg и dpkg-dev; первый, предназначенный для основных действий с бинарными пакетами, устанавливается по умолчанию в ходе первичной инсталляции и присутствует в любой (насколько мне известно) Debian-based системе; второй же, включающий утилиты для манипуляции с пакетами исходников, должен быть установлен дополнительно (или устанавливается как зависимость, например, при инсталляции пакета apt-build, о котором речь пойдет в одной из грядущих заметок).

Для начала рассмотрим установку пакетов. Итак, если нам необходимо установить единичный пакет, поступаем так:

$ dpkg -i path2/packagename.deb

и дело в шляпе - через считанные мгновения пакет packagename.deb будет установлен: это обеспечивает опция -i (от install) вслед за командой dpkg. Дабы в дальнейшем не повторяться, замечу, что все действия по установке и удалению пакетов требуют полномочий суперпользователя, приобретаемых временно командой su или, как это принято в Ubuntu и его дериватах, sudo.

Разумеется, успешной установка пакета будет только при соблюдении следующих условий:

  1. физическом наличии его в пределах досягаемости с локальной машины (на подключенной файловой системе, смонтированном компакт-диске или ином носителе);
  2. знании точного пути (path2) к нужному файлу пакета (имя его, кстати, также указывается полностью, в отличие от того, что мы увидим при использовании apt) или aptitude;
  3. отсутствии неудовлетворенных зависимостей.

Из первого условия следует, что dpkg удобно использовать при доустановке компонентов с инсталляционного CD/DVD (или установке заблаговременно скачанных пакетов). Второе условие самоочевидно. Ну а третье также выполнимо без особого труда: в случае нарушения зависимостей dpkg выдаст сообщение об ошибке с полным перечнем того, что нужно установить для ее устранения, причем в списке будут перечислены только обязательные зависимости. И достаточно все необходимые пакеты поместить в командную строку:

$ sudo dpkg -i path2/packagename1.deb ... path2/packagename#.deb

для того, чтобы они были установлены единой операцией (если, конечно, все эти пакеты имеются в наличии).

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

$ sudo dpkg -r packagename

удалит пакет, но сохранит настроечные его файлы, а команда

$ sudo dpkg -P packagename

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

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

Следующая сфера деятельности команд семейства dpkg - получение информации о пакетах. Для уже установленных пакетов это проще всего сделать с помощью команды dpkg-query, требующей указания какого-либо из операторов действия и имени пакета в качестве аргумента. Операторы действия команды dpkg-query можно вывести так (поскольку получение информации о пакетах никак не влияет на систему в целом, необходимости в правах суперпользователя тут не возникает):

$ dpkg-query --help

Они следующие:

  • -s или --status - вывод детального статуса пакета, включающий:
    • имя пакета, собственно статус (установлен ли он) и приоритет;
    • секция репозитория, к которой пакета относится (например, editors - для текстовых редакторов, kde - для аудиоплейера amarok, и так далее);
    • размер пакета в установленном виде;
    • имя майнтайнера, архитектура, для которой пакет собран, и номер версии;
    • описание зависимостей и конфликтов;
    • краткое (в один абзац) описание пакета.
  • -p или --print-avail - практически то же самое, но в форме, приспособленной для печати;
  • -l или --list - тоже своего рода описание статуса, включающее сведения о том, установлен ли пакет, нуждается ли он в обновлении, нет ли ошибок в его настройке, и так далее;
  • -W или --show - просто вывод номера версии в форме:
    	$ dpkg-query -W nano
    	nano    1.3.8-2
    	
  • -L или --listfiles - полный список файлов, относящихся к данному пакету, в форме:
    	/.
    	/etc
    	/etc/nanorc
    	/usr
    	/usr/share
    	/usr/share/doc
    	/usr/share/doc/nano
    	...
    	
    и так далее (пример для текстового редактора nano);
  • -S или --search - поиск пакета, к которому относится некий файл, указанный в качестве аргумента; может выполнить и обратную задачу - поиск всех файлов, принадлежащих данному пакету, вывод в этом случае оказывается аналогичным dpkg-query -L.

Повторю, что все сказанное о информации по пакетам, относится к пакетам уже установленным. Для получения же сведений о неустановленных пакетах удобнее использовать соответствующие инструменты из комплекта apt или aptitude.

Еще одна важная задача утилит dpkg - выполнение настройки отдельных, уже установленных, пакетов. Предназначенная для этого команда так и называется - dpkg-reconfigure, и запускается (от лица суперпользователя или посредством команды sudo) таким образом:

$ dpkg-reconfigure packagename

После этого вызывается диалоговая программа конфигурации - debconf, и ответы на серию более или менее тривиальных вопросов позволяют добиться желаемого результата. Каковы эти вопросы - зависит от настраиваемой программы. Чтобы получить представление о процессе, рассмотрим пример с реконфигурированием кириллического окружения в консоли, за которое отвечает пакет console-cyrillic (разумеется, перед настройкой он должен быть установлен). Правда, и без него консоль и в Debian, и во всех представителях семейства Ubuntu русифицирована вполне справно, но использование console-cyrillic позволяет использовать многие дополнительные возможности по сравнению с базовой кириллизацией.

Итак, в ответ на команду

$ dpkg-reconfigure console-cyrillic

последовательно вызывается серия диалоговых окон. Первое из них (рис. 1) предлагает ввести список используемых (и нуждающихся в русификации) виртуальных терминалов, каковых по умолчанию шесть (и с умолчаниями вполне можно согласиться).

Далее идет выбор раскладки: и здесь можно придерживаться умолчального выбора - Русская с Win клавишами (рис. 2), других на просторах Руси, наверное, и не осталось.

Затем предлагается определить переключатель латиница/кириллица. Я - приверженец традиционного CapsLock (рис. 3), но - не тюрьма же народов! - выбор достаточно обширен, включая не только традиционный "подоконный" Alt+Shift, но даже и Win-клавиши (действительно, надо же прикрутить к ним хоть что-нибудь).

Следующая панель выбора - назначение временного переключателя между кириллической и латинской раскладками клавиатуры, действующего только на набор следующего символа (типичное его применение - ввести столь любимый соотечественниками символа бакса в русскоязычный текст). Тут я как раз и пользую одну из win-клавиш, остальные возможности приведены на рис. 4).

После этого предлагается выбрать экранный шрифт. Их немало, но при локали UTF-8 всерьез следует рассматривать только Terminus Unicode жирный или Terminus Unicode Framebuffer (рис. 5)- в зависимости от того, используется ли графическая консоль через линейный кадровый буфер, или нет. С размером матрицы шрифта также вопросов не возникает - в современных условиях приемлема только матрица 8x16 (то, что отмечено по умолчанию на рис. 6).

"И, наконец, - как говорит очередная информационная панель, - вам нужно выбрать используемую кодировку". Поскольку мы не живем ни в Сербии, ни в Македонии, и веяниям прогресса также не чужды, останавливаемся на UNICODE (рис. 7).

Последний вопрос - установить настройку кириллицы в консоли при старте системы (рис. 8). С чем, очевидно, следует согласиться - иначе за каким таким зеленым все проделывалось? В любом случае - на этом реконфигурирование заканчивается, и возвращается приглашение командной строки.

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

Хотя разговор о dpkg практически закончен. Конечно, я не затронул тут команд из пакета dpkg-dev, предназначенных для работы с пакетами исходников. Но, по моему скромному мнению, это не самый удобный набор инструментов для решения этой задачи. Так что к вопросу исходников мы вернемся в заметке про apt-build, которая, надеюсь, последует в ближайшем будущем.

 




Комментарии

аноним, Fri Aug 14 11:09:04 2009:
Да по комментировать все мастера а написать подобное даже подобное.....
аноним, Fri Jun 12 15:54:18 2009:
Федорчук походу русской грамоте не обучен)))
аноним, Fri Jun 12 15:33:25 2009:
Статья полезная, но тысечи лексических ошибок. :/
аноним, Sat Apr 11 11:28:10 2009:
спасибо, понятно написано.
а если кто ценитель работы через synaptic, то пусть сам попробует сначала его собрать...
аноним, Sat Feb 28 03:41:14 2009:
аноним
аноним, Thu Jun 5 20:56:42 2008:
на кой хер портить ето добро гуи все сделано понятно и доступно
В.А., Mon Dec 10 16:06:28 2007:
To :sonapax, понедельник, 10 декабря 2007 г. 11:52:23:
>Статья хорошая. , неплохо б было про гуи надстройки к этому добру написать - если они конечно есть

Конечно, есть: synaptic (для всех GUI), adept (для KDE, хотя там есть встроенный м.п.)
sonapax, Mon Dec 10 11:52:23 2007:
>
Можно еще здесь посмотреть.
http://www-128.ibm.com/developerworks/ru/edu/l-lpic1101/index.html
<
писал бы, Идиот, что там можно посмотреть, список учебников по линуксу нах кому нужен, сука типа умник, хотели бы читать учебники сами нашлибы.

Статья хорошая. , неплохо б было про гуи нацтройки к етому добру написать - если они конечно есть (не видел), сам уже собираюсь переходить на Дебиан, вот вечером или завтра скачает человек мне Ленни тестинг, буду ковырять )
аноним, Wed Mar 7 14:44:51 2007:
Можно еще здесь посмотреть.
http://www-128.ibm.com/developerworks/ru/edu/l-lpic1101/index.html

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

Новости:

Все новости на 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