HPUNIX Сайт о ОС и не только!

Глава Два - Базы Debian

10 февраля 2009 - unix
Глава Два - Основы Debian

Эта секция обеспечивает основную информацию по системе Debian для юзеров. За авторитетной информацией обращайтесь к документам:

  • Управление по политике Debian

  • Управление по созданию пакетов в Debian

  • Справочник Debian-разработчика

  • Управление начинающего Debian-мейнтейнера

ссылки на которые приведены в References, раздел 15.1.

Если вы ищете наименее детализированные описания (в форме HOW-TO), перебегайте к главе Управление пакетами в Debian, Глава 6 либо другие надлежащие главы.

Эта статья базирована на документах, взятых из "Debian FAQ", кропотливым образом реорганизованного в форму введения для обыденного админа системы Debian.

2.1 Архивы Debian

2.1.1 Структура каталогов

Программное обеспечение, сформированное в debian-пакеты, доступно в одной из нескольких древовидных структур каталогов на каждом зеркальном веб-сайте Debian Debian mirror site по протоколам FTP либо HTTP.

Последующие сборники могут быть найдены на каждом зеркале Debian в каталоге debian:

dists/:

Этот каталог содержит "дистрибутивы" и употребляется для канонического пути для доступа к имеющимся (в текущее время) пакетам в релизах и пре-релизах Debian. Некие старенькые пакеты и файлы Packages.gz могут быть до сего времени и тут.

pool/:

Это новое физическое размещение всех пакетов релизов и пре-релизов Debian.

tools/:

DOS-утилиты для сотворения загрузочных дискет, разбиения вашего жесткого диска, сжатия/распаковки файлов и загрузки Linux.

doc/:

Это основная документация по Debian, такая как FAQ, аннотации по системе оповещения об ошибках и т.д.

indices/:

The Maintainers file and the override files.

project/:

материалы, в главном, для разработчиков. Это:

project/experimental/:

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

project/orphaned/:

Тут находятся пакеты, которые 'осиротели' (т.е. остались без мейнтейнера) и были изъяты из дистрибутива.

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

Обычно существует три дистрибутива Debian в каталоге dists. Это дистрибутив stable, дистрибутив testing и дистрибутив unstable. Время от времени может быть к тому же frozen.

Каждый дистрибутив определяется как символическая ссылка на реальный каталог под кодовым именованием в каталоге dists.

2.1.3 Дистрибутив stable

Пакеты stable дистрибутива Debian Sarge (3.1r0) записываются в каталог stable (символическая ссылка на каталог sarge/):

  • stable/main/: Этот каталог содержит пакеты, которые формально составляют самый свежайший релиз системы Debian.

    Эти пакеты стопроцентно отвечают Советам об открытом ПО в Debian (DFSG) (смотрите также файл /usr/share/doc/debian/social-contract.txt из пакета debian-doc) и являются на сто процентов свободными к использованию и распространению.

  • stable/non-free/: Этот каталог содержит пакеты, распространение которых ограничено требованиями ряда копирайтов.

    К примеру, некие пакеты имеют лицензию, которая воспрещает коммерческую дистрибуцию. Другие могут распространяться в составе дистрибутива, но в реальности являются shareware и несвободным ПО. Лицензия каждого из этих пакетов должна быть исследована и учтена перед тем, как пакет будет включен в дистрибутив на CDROM и т.д.

  • stable/contrib/: Этот каталог содержит пакеты, которые сами по для себя являются свободными (отвечают DFSG) и могут свободно распространяться, но некоторым образом зависят от несвободного пакета из non-free секции.

Сейчас, в дополнение к выше обозначенным расположениям пакетов, пакеты на физическом уровне размещаются в каталоге pool (Каталог pool, раздел 2.1.10).

Текущее состояние по отысканным ошибкам в stable дистрибутиве отображается на страничке Stable Problems.

2.1.4 Дистрибутив testing

Пакеты для дистрибутива testing, Debian Et/hdbk/, записываются в testing каталог (символическая ссылка на et/hdbk//) после того, как они пройдут некое тестирование в unstable. На физическом уровне пакеты размещаются в каталоге pool' (Каталог pool, раздел 2.1.10). В каталоге testing/ также имеются подкаталоги main, contrib и non-free, которые делают те же функции, что и в дистрибутиве stable/.

Для всех архитектур, под которые собираются пакеты дистрибутива testing, обеспечивается синхронность версий, также эти пакеты не обязаны иметь зависимостей, которые могли бы привести к невозможности их удалить, и обязаны иметь меньше критичных ошибок, чем версия, находящаяся на данный момент в unstable. Таким макаром, мы возлагаем надежды, что testing всегда близок, чтоб стать кандидатом в релиз. Подробности о механизме тестирования смотрите в документе http://www.debian.org/devel/testing.

Самое последнее состояние дистрибутива testing публикуется на этих веб-сайтах:

  • update excuses

  • препядствия testing

  • Install GNU/Linux Debian on Alix mini-itx boards

  • критичные ошибки

  • ошибки в базисной системе

  • Глава Два - Основы Debian
  • ошибки в стандартных пакетах и пакетах задач

  • замечания по другим ошибкам и их исправлениям

2.1.5 Дистрибутив unstable

Пакеты для unstable дистрибутива, который всегда имеет кодовое имя "Sid", сохраняются в каталоге unstable (символическая ссылка на sid/) сходу после того, как их закачают в Debian-архив и они находятся там до их перемещения в testing/. Сами пакеты располагаются в каталоге pool (Каталог pool, раздел 2.1.10).

В каталоге unstable также есть подкаталоги main, contrib и non-free, которые делают те же функции, что и в дистрибутиве stable/. Дистрибутив unstable содержит снимок разрабатываемой в реальный момент системы.

Вы сможете использовать и тестировать эти пакеты, осознавая состояние их готовности. Преимущество от использования дистрибутива unstable в том, что вы всегда используете самое последнее ПО из проекта Debian — оно является и самым нестабильным.

Текущее состояние ошибок в дистрибутиве unstable отображается на страничке Unstable Problems.

2.1.6 Дистрибутив frozen

Когда дистрибутив testing довольно созреет, он замораживается, означая тем, что новый код более не принимается, а только исправления ошибок, если таковые нужны. Также, создается новое тестируемое дерево в каталоге dists c новым кодовым заглавием. Замороженный дистрибутив проходит в течение нескольких месяцев фазу тестирования с нерегулярными обновлениями и глубокими заморозками, именуемыми тест-циклами.

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

2.1.7 Кодовые имена дистрибутивов Debian

Реальные имена каталогов в каталоге dists, такие как sarge/ и et/hdbk// являются просто кодовыми именами. Когда дистрибутив Debian находится в стадии разработки, он не имеет номера версии, зато имеет кодовое имя. Такое предназначение кодовых имен упрощает зеркалирование дистрибутива Debian(если реальное имя каталога unstable изменялось бы на stable/ (дистрибутив стал размеренным - прим. переводчика), то пришлось бы закачивать повторно огромное количество файлов).

В текущее время stable/ - это символическая ссылка на каталог sarge/, а testing/ - ссылка на et/hdbk//. Это значит, что Sarge является текущим размеренным дистрибутивом, а Et/hdbk/ находится в стадии тестирования.

unstable/ - это неизменная символическая ссылка на каталог sid/, потому что Sid является всегда нестабильным дистрибутивом.

2.1.8 Кодовые имена прошедшего

Вот кодовые имена, которые уже использовались: "Buzz" для релиза 1.1,"Rex" для релиза 1.2, "Bo" для релизов 1.3.x, "Hamm" для релиза 2.0, "Slink" для релиза 2.1 и "Potato" для релиза 2.2.

2.1.9 Источник кодовых имен

Имена дистрибутивов до сего времени были именами персонажей из кинофильма Toy Story от студии Pixar.

  • Buzz (Buzz Lightyear) был астронавтом

  • Rex был тиранозавром,

  • Bo (Bo Peep) была девченкой, ухаживающей за овечкой,

  • Hamm был piggy bank

  • Slink (Slinky Dog) был игрушечной собакой,

  • Sarge был предводителем армии людей Зеленоватого Пластика,

  • Potato был, естественно, мистером Картошечья Голова,

  • Woody был ковбоем,

  • Sid был парнем по-соседству, который сломал игрушки.

2.1.10 Каталог pool

Исторически пакеты хранились в каталоге дистрибутива, для которого они были сделаны. Сам каталог дистрибутива находился в каталоге dists. Это вызывало различного рода трудности, в том числе и большой расход пропускной возможности канала на зеркалирующих серверах, когда выполнялись огромные конфигурации.

Сейчас пакеты хранятся в большенном "пуле", структурированном в согласовании с именованием начального пакета. Чтоб сделать пул управляемым, он поделен на секции (main, contrib, и non-free) и дальше по первым буковкам имени начального пакета. Эти сборники содержат несколько файлов: бинарные пакеты для каждой архитектуры и пакеты с начальными текстами, на базе которых эти бинарные пакеты были собраны.

Вы сможете узнать, где располагается каждый пакет, выполнив команду типа apt-ca/hdbk/e showsrc имя_моего_пакета и посмотрев на строчку "Directory:". К примеру, пакеты apa/hdbk/e хранятся в pool/main/a/apa/hdbk/e/.

Потому что существует очень огромное количество пакетов библиотек lib*, то они обрабатываются чуть по другому. К примеру, пакеты libpaper хранятся в pool/main/libp/libpaper/.

Сборники dists все еще употребляются индексными файлами для программ типа apt. Также, на момент написания этого документа, старенькые дистрибутивы еще не сконвертированы использовать пулы, и потому в поле Directory заголовка пакета Вы увидите пути, содержащие имена дистрибутивов типа potato либо woody.

Обычно Для вас не надо волноваться об этом, потому что новенькая программка apt и, возможно, старенькые dpkg-ftp (смотрите Методы обновления системы Debian, раздел 2.3.1) обработают это без заморочек. Если Для вас необходимо больше инфы, смотрите RFC: Реализация пула пакетов.

2.1.11 Историческая справка относительно Sid

Когда не было современного Sid, организация веб-сайта с архивом Debian имела одни большой недочет: было предположение, что когда создавалась архитектура в текущем unstable/, она могла быть также выпущена, когда сам дистрибутив переходил в фазу релиза либо stable. Для огромное количество архитектур это было неправильным, что приводило к необходимости переноса соответственных каталогов в момент релиза (в unstable - прим. пер.). Такие перемещения были непрактичными из-за завышенного расхода пропускной возможности канала.

Админы архива решали эту делему в течение пары лет методом помещения бинарных файлов для архитектур, которая не готова к выпуску, в особый каталог, именуемый sid. Когда такая архитектура заходила в фазу релиза, то в 1-ое время была ссылка из текущего stable/ на sid/, and from then on they were created inside the unstable/tree as usual. Это размещение вводило в заблуждение юзеров.

С приходом пула пакетов (смотрите Каталог pool, раздел 2.1.10) в процессе разработки дистрибутива Woody, бинарные пакеты начали хранить в каноническом месте пула вне зависимости от дистрибутива, и таким макаром выпуск дистрибутива больше не вызывает завышенного расхода пропускной возможности канала на зеркалах (существует, но,a lot of gradual bandwidth consumption throughout the development process).

2.1.12 Пакеты, закаченные в incoming/

Закаченные пакеты, находящиеся в http://incoming.debian.org/ проходят проверку для гарантии того, что они в реальности высланы разработчиком Debian (в неприятном случае, т.е. случае закачки пакета лицом, не являющимся мейнтейнером - закачка NMU, пакет помещается в под-каталог DELAYED). Один раз в денек пакеты из incoming/ передвигаются в unstable/.

В последних случаях Вы сможете пожелать установить пакеты из incoming/ до того, как они достигнут unstable/.

2.1.13 Доступ к старенькым пакетам

В то время, как самые последние дистрибутивы Debain хранятся в каталоге debian на каждом зеркале Debian, архивы старенькых дистрибутивов типа Slink хранятся по адресу http://ar/hdbk/ive.debian.org/ либо в каталоге debian-ar/hdbk/ive на каждом зеркале Debian.

Пакеты старенькых testing и unstable дистрибутивов могут быть найдены по адресу http://snapshot.debian.net/.

2.1.14 Секции архитектрур

Снутри каждого основного дерева каталогов (dists/stable/main, dists/stable/contrib, dists/stable/non-free, dists/unstable/main/, и пр.), бинарные пакеты располагаются в под-каталогах, чьи имена обозначают архитектуру микропроцессора, под которую эти пакеты были собраны.

  • binary-all/ - для архитектурно-независимых пакетов. Сюда относятся, к примеру, скрипты на языке Perl, документация.

  • binary-platform/ - для пакетов, которые могут исполняться на определенной аппаратной платформе.

Направьте внимание, что бинарные пакеты дистрибутивов testing и unstable сейчас располагаются не в обрисованных каталогах, а каталоге верхнего уровня pool. Индексные файлы типа (Packages и Packages.gz) все же хранятся для оборотной сопоставимости.

В каждом дистрибутиве для поддерживаемых аппаратных архитектур есть Release Notes. Их можно отыскать на страничке Release Notes соответственного дистрибутива: stable и testing.

2.1.15 Начальный код

Для всех компонент системы Debian имеется начальный код. Более того, условия лицензий большинства программ в системе требуют, чтоб начальный код распространялся вкупе с программкой, или был бы метод его получить.

Обычно начальный код размещается в каталогах source, находящиеся по-соседству с каталогами архитектур, либо, с недавнешнего времени, в каталоге pool (смотрите Каталог pool, раздел 2.1.10). Чтоб получить начальный код пакета, не вникая в структуру архива Debian, используйте команду apt-get source mypackagename.

Некие пакеты, к примеру pine, доступны исключительно в виде начальных текстов из-за ограничений лицензии. (Не так давно был представлен пакет pine-tracker для облегчения установки Pine.) Процедуры, описанные в Портирование пакета в систему на базе stable, раздел 6.4.10 и Packaging, раздел 13.9 обрисовывают методы ручной сборки пакетов.

Linux Mint Debian Edition (April 2012) Review - Linux Distro Reviews

Начальный код для пакетов из каталогов contrib и non-free, может отсутствовать, потому что пакеты из этих каталогов формально не являются часть системы Debian.

2.2 Система управления пакетами в Debian

2.2.1 Обзор пакетов Debian

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

  • Бинарные пакеты, которые содержат исполняемые и конфигурационные файлы, странички руководств в формате man/info, информацию о копирайтах и другую документацию. Эти пакеты распространяются в особом архивном формате Debian (смотрите Формат Debian пакета, раздел 2.2.2) и обычно выделяются наличием .deb расширения файлов. Бинарные пакеты могут быть распакованы с помощью утилиты Debian dpkg; подробности приведены в ее man-странице.

  • Глава Два - Основы Debian
  • Пакеты с начальным текстом, которые состоят из .dsc файла, описывающего пакет (включая имена дальше идущих файлов), файла .orig.tar.gz, который содержит немодифицированный начальный код в формате tar и упакованный программкой gzip, и обычно файл .diff.gz, который содержит конфигурации начального текста, специфичные для Debian. Утилита dpkg-source упаковывает и распаковывает пакеты Debian с начальными текстами; подробности смотрите в ее man-странице.

Установка программного обеспечения с помощью пакетной системы употребляет так именуемые "зависимости", которые кропотливо спроектированы мейнтейнерами пакета. Эти зависимости задокументированы в файле control, связанным с каждым пакетом.

К примеру, пакет, содержащий компилятор GNU C (gcc) "зависит" от пакета binutils, который содержит в себе компоновщик и транслятор. Если юзер попробует установить gcc без подготовительной установки binutils, система управления пакетами (dpkg) выведет сообщение об ошибке, что также нужна установка binutils, и оборвет установку gcc. (Но, это поведение может быть изменено по просьбе юзера; смотрите dpkg(8).) Дополнительные подробности смотрите Зависимости пакетов, раздел 2.2.8 ниже.

Инструменты для работы с пакетами Debian можно использовать для того, чтоб:

  • манипулировать и управлять пакетами либо их частями,

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

  • посодействовать разработчикам в разработке архивов пакетов,

  • посодействовать юзерам в установке пакетов, размещающихся на удаленном веб-сайте архива Debian.

2.2.2 Формат Debian пакета

"Пакет" Debian либо архивный файл Debian содержит исполняемые файлы, библиотеки и документацию, ассоциированные с неким программмным комплектом либо набором связанных программ. Обычно архивный файл Debian имеет название файла с расширением .deb. [1]

Внутренние подробности этого формата бинарного пакета Debian описывются на deb(5) man-странице. Потому что внутренний формат может изменяться (от релиза к релизу Debian), всегда используйте страничку dpkg-deb(1) для манипулирования .deb файлами.

До дистрибутива Sarge включительно со всеми архивными файлами Debian можно работать стандартными командами Unix типа ar и tar, даже когда не доступны команды dpkg.

2.2.3 Соглашение об именах файлов Debian-пакетов

Названия файлов пакетов Debian подчиняются последующему соглашению:

Bash:
  1. foo_НомерВерсии-номерDebianРевизии.deb

где foo является именованием пакета. Для проверки можно найти имя пакета, связанное с неким архивным файлом (.deb file) одним из последующих методов:

  • Изучить файл "Packages" в каталоге дистрибутива на архивном веб-сайте Debian. Этот файл содержит записи, описывающие каждый пакет; 1-ое поле в их - это формальное имя пакета.

  • Использовать команду dpkg --info foo_VVV-RRR.deb (где VVV и RRR - номера версии и ревизии запрашиваемого пакета, соответственно). Команда показывает, кроме других данных, имя пакета, соответственное изучаемому архивному файлу.

Компонент VVV - это номер версии, обозначенный разработчиком программки (upstream developer). Не существует эталона о нумерации версий, потому они могут иметь разные форматы типа "19990513" либо "1.3.8pre1".

Компонент RRR - это ревизионный номер Debian, который указывается разработчиком Debian (либо личным юзером, если он пожелал собрать пакет без помощи других). Этот номер соответствует уровню ревизии пакета Debian, потому новый ревизионный номер обычно значит конфигурации в Debian makefile (debianles), файле Debian control (debian/control), скриптах установки либо удаления (debian/p*), либо конфигурационных файлах, применяемых в пакете.

2.2.4 Сохранение текущей конфигурации

Сохранение файлов опции реализуется через механизм "conffiles" системы Debian. Файлы опции (обычно размещаемые в /etc/) указываются в файле conffiles системы пакетов Debian. Cистема управления пакетами гарантирует, что при обновлении пакета эти файлы не будут перезаписаны.

When it is possible to configure the system without modifying files that belong to various Debian packages, it is usually a good idea not to modify them even if they are "conffiles". This ensures faster and smoother upgrade operations.

Чтоб точно найти, какие файлы будут сохранены при обновлении пакета, сделайте:

Bash:
  1. dpkg --status package

и смотрите под строчкой "Conffiles:".

Подробности, связанные с содержимым Debian-файла conffiles, представлены в руководстве по политике Debian, секция 11.7 (смотрите References, раздел 15.1).

2.2.5 Скрипты сопровождения Debian

Скрипты сопровождения Debian это исполняемые скрипты, автоматом выполняемые перед либо после установки пакета. Совместно с файлом control, эти файлы являются частью секции "control" архивного файла Debian.

А именно, такими файлами являются:

preinst

Этот скрипт производится до распаковки пакета, к которому он принадлежит, из архивного файла Debian (.deb). Многие "preinst" скрипты останвливают сервисы обновляемых пакетов до окончания установки либо обновления (с следующим удачным выполнением скрипта "postinst").

postinst

Этот скрипт обычно завершает конфигурирование пакета после его распаковки из архивного файла Debian (.deb). Нередко скрипт "postinst" запрашивает у юзера некую информацию и/либо предупреждает юзера что, если он воспринимает значения по дефлоту, то необходимо будет не запамятовать переконфигурировать пакет, как это требуется. Многие скрипты "postinst" потом делают команды, нужные для пуска либо перезапуска сервиса после установки либо обновления пакета.

prerm

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

postrm

Этот скрипт обычно видоизменит ссылки либо другие файлы, связанные с пакетом, и/либо удаляет файлы, сделанные им. (Смотрите также Виртуальные пакеты, раздел 2.2.7.)

В текущее время все control-файлы могут быть найдены в каталоге /var/lib/dpkg/info. Файлы, относящиеся к пакету foo начинаются с имени "foo" и, соответственно, имеют расширение файла типа "preinst", "postinst", и т.д.. Файл foo.list в этом каталоге описывет все файлы, установленные с пакетом foo. (Заметьте, что месторасположение этих файлов является внутренней особенностью программки dpkg, и потому может изменяться.)

2.2.6 Ценности пакетов

В помощь системе управления пакетами каждому пакету Debian мейнтейнерами дистрибутива назначается ценность priority. Ценности бывают:

  • Required (требующиеся) пакеты, которые нужны для правильного функционирования системы.

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

  • Important (принципиальные) пакеты должны быть найдены на хоть какой Unix-подобной системе.

    Пакеты с таким ценностью - это другие пакеты, без которых система не будет нормально работать либо не будет комфортной. Сюда не относятся пакеты типа Emacs, X11, TeX либо любые другие большие приложения. Эти пакеты составляют наименьшую инфраструктуру.

  • Standard (стандартные) пакеты являются стандратными на хоть какой Linux системе, включая уместно маленькую, но не ограниченную систему текстового режима.

    Это то, что устанавливается по дефлоту, если юзер ничего не избрал. "Standard" не включает многих больших приложений, но уже включает Emacs (Это больше часть инфрастурктуры, чем приложение.) и разумное подмножество систем Tex и LaTeX (разумное так, чтоб не добиваться X11).

  • Optional (опциональные) пакеты включает все те, которые вы сможете возжелать установить, даже если с ними не знакомы, и если не имеете особых требований.

    Это включает X11, стопроцентно TeX и огромное количество приложений.

  • Extra пакеты, которые либо конфликтуют с другими более высочайшими ценностями, несут малую пользу для юзеров, с ними незнакомыми, либо имеют особые требования, делающие их неподходящими к "Optional".

Пожалуйста, заметьте разницу меж "Priority: required", "Section: base" и "Essential: yes" в описании пакета. "Section: base" значит, что пакет устанавливается перед чем бы то нибыло на новейшей системе. Большая часть пакетов с "Section: base" имеют ценность "Priority: required" либо "Priority: important", и многие из их помечены как "Essential: yes". "Essential: yes" значит, что при удалении этого пакета из системы нужно указать дополнительную форсирующую опцию системе управления пакетами dpkg. К примеру, пакеты libc6, mawk и makedev являются пакетами с ценностью "Priority: required" из секции "Section: base", но не являются "Essential: yes".

2.2.7 Виртуальные пакеты

Виртуальный пакет - это общее имя, употребляемое к хоть какому из пакетов некоторой группы, все пакеты из которой обеспечивают схожую базисную функциональность. К примеру, пакеты tin и trn являются программками для чтения news-конференций, и неважно какая из их должна, как следует, удовлетворять зависимость программки, требующей для обычного собственного функционирования установленной программки чтения news-конференций. Эти пакеты, таким макаром, обеcпечивают "виртуальный пакет", именуемый news-reader.

Схожим образом, оба пакета exim и sendmail обеспечивают функциональность почтового транспортного агента. Как следует, они предоставляют виртуальный пакет mail-transport-agent. Если какой-то из них установлен, то неважно какая программка, зависящая от наличия установленного почтового транспортного агента будет удовлетворена существованием этого виртуального пакета.

Debian имеет таковой механизм, что если в системе установлено более 1-го пакета, предоставляющего виртуальный пакет, то сисадмин может установить какой-то из них, как предпочитаемый. Для этого употребляется команда update-alternatives, описываемая дальше Alternative commands, раздел 6.5.3.

2.2.8 Зависимости пакетов

Система пакетов в Debian имеет ряд "зависимостей" пакетов, которые созданы для того, чтоб показать (одним признаком) уровень, на котором программка A может работать независимо от существования программки B в данной системе:

  • Пакет A зависит (depends) от пакета B, если пакет B непременно должен быть установлен для выполнения пакета A. В неких случаях, пакет A зависит не только лишь от пакета B, а к тому же от определенной версии пакета B. В данном случае зависимость от версии пакета значит нижний предел, в том смысле, что пакет А находится в зависимости от хоть какой версии пакета B, не старее обозначенной версии.

  • Пакет A советует (recommends) пакет B, если мейнтейнер пакета решил, что большая часть юзеров не захочут иметь пакет А без функциональности, предоставляемой пакетом B.

  • Пакет A предлагает (suggests) пакет B, если пакет B содержит файлы, относящиеся к (либо обычно улучшающие) функциональности пакета A.

  • Пакет А конфликтует (conflicts) с пакетом B, когда пакет A не будет работать, если пакет B установлен в системе. Более нередкий случай конфликта, когда пакет A содержит файлы, которые являются улучшением тех, что находятся в пакете B. Статус "конфликтует" нередко комбинируется с "подменяет".

  • Пакет A подменяет (replaces) пакет B, когда установленные файлы пакета B удаляются и, в неких случаях перезаписываются файлами пакета A.

  • Пакет A обеспечивает (provides) пакет B, когда все файлы и функциональность пакета B врубается в состав пакета A. Этот механизм предоставляет для юзеров с ограниченным дисковым местом метод получить только реально подходящую им часть пакета A.

Более подробную информацию об использовании каждого из этих определений можно отыскать в Руководстве по созданию пакетов и в Руководстве по политике.

Заметьте, что программка dselect имеет более тонко настроенный контроль над пакетами, указываемыми зависимостями вида советует и предлагает, ежели программка apt-get, которая просто вытаскивает все пакеты, обозначенные в зависимости зависит и не трогает все пакеты, обозначенные в зависимостях пакета советует и предлагает. Обе программки в современном виде употребляют за базу систему APT.

2.2.9 Значение "pre-depends"

"Pre-depends" - особый вид зависимости. В случае обыденного пакета программка dpkg распаковывает архивный файл пакета (т.е., файл .deb) вне зависимости от существования в системе файлов, от которых зависит данный пакет.

Распаковка же, по существу, значит, что программка dpkg извлечет из архива .deb файлы, подлежащие установке на Вашу файловую систему и расположит их на собственных местах. Если данный пакет зависит (depends) от наличия некоторых других пакетов на Вашей системе, то программка dpkg откажется окончить установку (выполняя действие "configure") до того времени, пока требуемые пакеты не будут установлены.

Но, есть некие пакеты, даже распаковка которых с помощью программки dpkg будет отменена, пока не будут разрешены определенные зависимости. Считается, что такие пакеты критично зависят ("pre-depend") (как еще перевести "pre-depends? - прим. переводчика) от присутствия неких других пакета(ов).

Проект Debian предоставил этот механизм, чтоб поддержать неопасное обновление систем с формата a.out на ELF формат, когда был критичен порядок, в каком пакеты распаковываются. Бывают еще другие ситуации больших обновлений, где этот способ полезен, к примеру, в случае пакетов с ценностью "Required" и их зависимостями от libc.

Замечу, что более детальная информация об этом может быть найдена в Руководстве по созданию пакетов.

2.2.10 Статус пакета

Статус пакета может быть "unknown" (неведомый), "install" (установить), "remove" (удалить), "purge" (очистить) либо "hold" (удержать). Эти предписывающие флаги демонстрируют то, что юзер вожделеет сделать с пакетом (делая собственный выбор в секции "Select" программки dselect, либо прямо вызывая программку dpkg).

Смысл эти значений:

  • unknown (неведомый) - юзер никогда не демонстрировал свою потребность в пакете.

  • install (установить) - юзер вожделеет, чтоб пакет был установлен либо обновлен.

  • remove (удалить) - юзер вожделеет, чтоб пакет был удален, но не вожделеет удалять никакие конфигурационные файлы.

  • purge (очистить) - юзер вожделеет, чтоб пакет был стопроцентно удален, включая его конфигурационные файлы.

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

2.2.11 Удержание пакетов от обновления

Существует два механизма для удержания пакета от обновления: через программку dpkg либо, начиная с Woody, через систему APT.

В случае с dpkg, поначалу экспортируем перечень выбора пакетов:

Bash:
  1. dpkg --get-selections \* > selections.txt

Потом отредактируем получившийся файл selections.txt, изменив строчку, содержащую пакет, который желаем удержать, к примеру libc6, последующим образом:

Bash:
  1. libc6 install

заменяем на:

Bash:
  1. libc6 hold

Сохраням файл и перезагружаем его в базу данных dpkg таким методом:

Bash:
  1. dpkg --set-selections < selections.txt

Либо, если вы понимаете имя пакета для удержания, просто сделайте:

Bash:
  1. e/hdbk/o libc6 hold | dpkg --set-selections

Эта процедура держит пакеты в процессе установки каждого пакета.

Тот же самый эффект можно получить, используя программку dselect. Просто войдите на экран [S]elect, найдите пакет, который желаете удержать в его реальном состоянии и нажмите кнопку `=' (либо `H'). Конфигурации войдут в силу сходу после выхода из экрана [S]elect.

Система APT в дистрибутиве Woody имеет новый другой механизм для удержания пакетов во время процесcа подборки архива, используя Pin-Priority. Смотрите man-страницу apt_preferences(5), также http://www.debian.org/doc/manuals/apt-howto/ либо пакет apt-howto; глава Обзор файла /etc/apt/preferences, раздел 6.2.8 тоже содержит короткое разъяснение.

2.2.12 Пакеты с начальным текстом

Пакеты с начальным текстом размещаются в каталоге source, или Вы сможете скачать их вручную либо использовать APT

Bash:
  1. apt-get source foo

чтоб их получить (смотрите man-страницу apt-get(8), чтоб настроить APT для этого).

2.2.13 Сборка бинарного пакета из пакета с начальным текстом

Чтоб скомпилировать начальный текст пакета foo, Для вас необходимы будут все последующие файлы - foo_*.dsc, foo_*.tar.gz и foo_*.diff.gz (заметьте, что не существует файла .diff.gz для самого пакета Debian).

Как Вы их получите, и если у Вас установлен пакет dpkg-dev, команда

Bash:
  1. $ dpkg-source -x foo_версия-ревизия.dsc

распакует пакет с начальным текстом в каталог под именованием foo-версия.

Вызовите следущую команду, чтоб собрать бинарный пакет:

Bash:
  1. $ cd foo-версия
  2. $ su -c "apt-get update ; apt-get install fakeroot"
  3. $ dpkg-buildpackage -rfakeroot -us -uc

Дальше,

Bash:
  1. # su -c "dpkg -i ../foo_версия-ревизия_архитектура.deb"

чтоб установить только-только собранный бинарный пакет. Смотрите Портирование пакета в систему на базе stable, раздел 6.4.10.

2.2.14 Создание новых пакетов Debian

За детализированной информацией по созданию новых пакетов читайте Управление новым мейнтейнерам (New Maintainers' Guide), имеющееся в пакете maint-guide либо по адресу http://www.debian.org/doc/manuals/maint-guide/.

2.3 Обновление системы Debian

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

Для вас также необходимо изучить документ Release Notes, который обрисовывает подробности определенных обновлений, размещающийся на всех компакт-дисках с Debian, либо по адресам http://www.debian.org/releases/stable/releasenotes и http://www.debian.org/releases/testing/releasenotes.

Практическое управление по обновлению представлено в Управление пакетами в Debian, Глава 6. Эта секция только обрисовывает главные принципы.

2.3.1 Методы обновления системы Debian

Всегда можно просто, используя анонимный доступ по FTP либо через программку wget зайти в архив Debian, пристально изучить сборники, отыскать хотимый файл, скачать его, и, в конце концов, установить его с помощью программки dpkg. (Заметьте, что программка dpkg установит файлы обновления на свое место даже на работающей системе.) Время от времени, но, освеженный пакет востребует установки новейшей освеженной версии еще 1-го пакета, и пока он не будет установлен, установка не будет завершена.

Много людей сочли, что этот ручной метод расходует кучу времени, потому что Debian развивается очень стремительно — обычно каждую неделю закачивается огромное количество новых пакетов. И их число возрастает перед новым основным релизом.

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

2.3.2 Обзор инструментов управления пакетами

Система управления пакетами в Debian имеет две цели: манипулирование фактически файлами пакетов и подборка файлов пакетов из архива Debian. Программка dpkg делает первую задачку, система APT and программка dselect последнюю.

2.3.3 Программка dpkg

Это основная программка для манипулирования файлами пакетов; за полным описанием обращайтесь к man-странице dpkg(8).

Программка dpkg идет совместно с несколькими ординарными дополнительными программками:

  • dpkg-deb: Манипулирует файлами .deb. dpkg-deb(1)

  • dpkg-ftp: Древняя команда для подборки файлов пакетов. dpkg-ftp(1)

  • dpkg-mountable: Древняя команда для подборки файлов пакетов. dpkg-mountable(1)

  • dpkg-split: Разбивает большой пакет на более маленькие файлы. dpkg-split(1)

Программки dpkg-ftp и dpkg-mountable были замещены введением системы APT.

2.3.4 Система APT

Система APT (Усовершенствованный инструмент для работы с пакетами) представляет собой усовершенствованный интерфейс к системе управления пакетами в Debian, и состоит из нескольких программ, обычно начинающихся со префикса "apt-". Программки apt-get, apt-ca/hdbk/e и apt-cdrom - это инструменты командой строчки для манипулирования пакетами. Они также работают как пользовательские программы-платформы (back end) для других инструментов, таких как dselect и aptitude.

Для дополнительной инфы установите пакет apt и прочтите надлежащие man-страницы: apt-get(8), apt-ca/hdbk/e(8), apt-cdrom(8), apt.conf(5), sources.list(5), apt_preferences(5) (Woody), также /usr/share/doc/apt/guide//index/.

Другим источником инфы является страничка APT HOWTO. Она может быть установлена из пакета apt-howto, файл /usr/share/doc/Debian/apt-howto/.

Команды apt-get upgrade и apt-get dist-upgrade обновляют только пакеты, описываемые как "Depends:" и просматривают все пакеты с зависимостями "Recommends:" и "Suggests:". Чтоб избежать этого, используйте программку dselect.

2.3.5 Программка dselect

Это программка представляет собой управляемый при помощи меню интерфейс к системе управления пакетами в Debian. Она в особенности полезна в первых установках либо крупномасштабных обновлениях. Смотрите Программка dselect, раздел 6.2.3.

Для дополнительной инфы установите пакет install-doc и изучите файл /usr/share/doc/install-doc/dselect-beginner.en/ либо страничку по адресу dselect Documentation for Beginners.

2.3.6 Обновление работающей системы

Ядро (файловая система) в Debian системах поддерживает подмену файлов даже во время их использования.

Мы также предоставляем программку, именуемую start-stop-daemon, которая употребляется для пуска бесов на шаге загрузки либо для их останова, когда меняется уровень выполнения ядра (к примеру, при переходе из многопользовательского в однопользовательский режим либо в состояние "останов" /halt/). Та же программка употребляется установочными скриптами, когда новый пакет содержит устанавливаемый бес, для остановки работающих бесов и их рестарта, если это нужно.

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

2.3.7 Скаченные и кэшированные архивные файлы .deb

Если Вы вручную скачали файлы пакетов на Ваш жесткий диск (что, кстати, совсем не надо; смотрите описание программ dpkg-ftp либо APT выше), то после установки пакетов Вы сможете удалить файлы .deb из системы.

Если же употребляется система APT, то эти файлы кэшируются в каталоге /var/ca/hdbk/e/apt/ar/hdbk/ives. Вы сможете стереть их после установки (командой apt-get clean) либо скопировать их в каталог /var/ca/hdbk/e/apt/ar/hdbk/ives другой машины с целью экономии входящего трафика при следующих установках.

2.3.8 Журналирование (record-keeping) процесса обновления

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

Самый обычной путь поправить это - это запускать сессию программки dpkg, dselect, apt-get, и пр. c программкой script(1).

2.4 Процесс загрузки Debian

2.4.1 Программка init

Как и все Unix-подобные операционные системы, Debian загружается, выполняя программку init. Конфигурационный файл для init (/etc/inittab) показывает, что 1-ый скрипт, который должен быть выполнен, - это скрипт /etc/init.d/rcS.

Данный скрипт запускает все скрипты из каталога /etc/rcS.d/ по порядку (как перевести by sourcing ? - прим. перев.) либо порождая подчиненные процессы (зависимо от расширения названии файла) с целью инициализации системы, как то проверка и монтирование файловых систем, загрузка модулей, пуск сетевых сервисов, установка системных часов и пр. Дальше (для сопоставимости) этот скрипт делает файлы из каталога /etc/rc.boot/ (не считая тех, что имеют `.' в названии файла).

Любые скрипты из последнего каталога обычно предназначаются для использования сисадмином, и применение их в пакетах не допускается. За дополнительной информацией обращайтесь к System initialization, раздел 9.1 либо страничке Systemn levels and init.d scripts Управления по политике Debian.

2.4.2 Уровни выполнения

По окончании процесса загрузки программка init делает все стартовые скрипты в каталоге, определяемым уровнем выполенения по дефлоту (это уровень выполнения задается элементом id в файле /etc/inittab). Как и большая часть System V - совместимых Unix-систем, Линукс имеет Семь уровней выполнения:

  • 0 (останов системы),

  • 1 (однопользовательский режим),

  • 2 - 5 (разные многопользовательские режимы), и

  • 6 (перезагрузка системы).

Системы Debian идут с id=2, который указывает, что при входе в многопользовательский режим уровень выполнения по дефлоту - 2-ой, и потому требуется выполнить скрипты из каталога /etc/rc2.d/.

Скрипты в любом из каталогов /etc/rcN.d/, на самом деле, являются символическими ссылками на скрипты из каталога /etc/init.d/. Но, сами имена файлов в каждом /etc/rcN.d/ каталоге определяют метод, которым будут запущены скрипты из /etc/init.d/.

Конкретнее, перед входом в хоть какой уровень выполнения поначалу запускаются все скрипты, начинающиеся с буковкы `K'; данные скрипты останавливают сервисы. Дальше производятся все скрипты, начинающиеся в буковкы `S'; эти скрипты запускают сервисы.

Двузначное число после буковкы `K' либо `S' указывает порядок, в каком производятся скрипты. Скрипты с наименьшим номером производятся первыми.

Это метод работает, потому что все скрипты из каталога /etc/init.d/ принимают аргумент с одним из вероятных значений "start", "stop", "reload", "restart" либо "force-reload", и делают задачку, подобающую значению данного аргумента. Эти скрипты могут также употребляться после загрузки системы для управления разными процессами.

К примеру, последующая команда с аргументом "reload"

Bash:
  1. # /etc/init.d/sendmail reload

отправляет бесу sendmail сигнал, побуждающий его перечитать конфигурационный файл.

2.4.3 Настройка процесса загрузки

Debian не употребляет характерный BSD каталог rc.local для опции процесса загрузки; заместо этого он предоставляет последующий механизм.

Представим, системе необходимо на шаге загрузки либо при входе в определенный (System V) уровень выполнения исполнить скрипт foo. Тогда сисадмин должен сделать:

  1. Расположить скрипт foo в каталоге /etc/init.d/.

  1. Выполнить Debian-команду update-rc.d с надлежащими аргументами, чтоб сделать символические ссылки меж каталогами rc?.d (задаваемый в командой строке) и файлом /etc/init.d/foo. Тут ? - это номер от Нуль до 6, который соответствует одному из System V уровней выполнения.

  1. Перезагрузить систему.

Команда update-rc.d установит ссылки меж файлами в каталоге rc?.d и скриптом из /etc/init.d/. Любая ссылка будет начинаться с `S' либо `K' с следующим номером и именованием скрипта. Когда система заходит в уровень выполнения N, из каталога /etc/rcN.d/ скрипты, начинающиеся с `K', запускаются с аргументом stop, а позже оттуда же скрипты, начинающиеся с `S', запускаются с аргументом start.

К примеру, можно настроить, чтоб скрипт foo производился при загрузке, разместив его в каталог /etc/init.d/ и установив ссылки с помощью команды update-rc.d foo defaults 19. Аргумент defaults ссылается на уровни выполнения по дефлоту, которые могут быть от Два до 5. Аргумент Девятнадцать обеспечивает, что скрипт foo вызывается до всех других с номером 20 либо больше.

2.5 Поддержание обилия программного обеспечения

Debian предлагает несколько путей ублажения всех потребностей сисадмина без нарушений в системе:

  • dpkg-divert, смотрите The dpkg-divert command, раздел 6.5.1.

  • equivs, смотрите The equivs package, раздел 6.5.2.

  • update-alternative, смотрите Alternative commands, раздел 6.5.3.

  • make-kpkg поддерживает огромное количество системных загрузчиков. Смотрите странички make-kpkg(1) и Debian standard method, раздел 7.1.1.

Любые файлы в каталоге /usr/local/ принадлежат сисадмину и Debian их не трогает. Большая часть (либо все) файлы в каталоге /etc являются конфигурационными файлами и Debian их не будет перезаписывать при обновлениях, пока сисадмин очевидным образом этого не запросит.

2.6 Интернационализация

Система Debian интернациональна и обеспечивает отображение и ввод знаков на многих языках как в консоли, так в системе X Window. Огромное количество документов, man-страницы и системные сообщения переведены на многие языки, и их (языков) число вырастает. В процессе установки Debian просит юзера избрать язык установки ( и даже время от времени его местную вариацию).

Если Ваша установленная система не поддерживает все нужные Для вас языковые особенности, либо Для вас необходимо поменять язык либо установить другую раскладку клавиатуры для Вашего языка, смотрите Localization, раздел 9.7.

2.7 Debian и ядро

Смотрите The Linux kernel under Debian, Глава 7.

2.7.1 Компиляция ядра, приобретенного не из Debian

Нужно осознавать политку Debian в отношении заголовочных файлов (headers).

Библиотеки языка C в Debian собраны с самым свежайшим размеренным релизом заголовков ядра.

К примеру, релиз Debian 1.2 использовал версию заголовков 5.4.13. Эта практика отличается от той, что в пакетах начальных текстов ядра Linux, распространяемых на всех FTP-архивах Linux, где употребляются самые свежайшие версии заголовочных файлов. Заголовочные файлы ядра распространяются вкупе с ядром и находятся в каталоге /usr/include/linux/include/.

Если Для вас необходимо скомпилировать программку с более новыми заголовочными файлами, чем те, что предоставляются пакетом libc6-dev, то Вы должны добавить опцию -I/usr/src/linux/include/ к Вашей командной строке при компиляции. К примеру, это принципиально при сборке пакета беса автомонтирования (пакет amd).

Когда новые ядра изменяют некие внутренние особенности работы с NFS, программке amd необходимо знать об этом. Это и просит включения самых последних заголовочных файлов.

2.7.2 Инструменты для построения ядер, настроенных юзером

Юзерам, желающим собрать настроенное ими ядро, предлагается скачать пакет kernel-package. Данный пакет содержит скрипт для построения пакета с ядром и обеспечивает такую возможность средством пуска команды:

Bash:
  1. # make-kpkg kernel_image

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

Bash:
  1. # make-kpkg --help

также доступную на man-странице make-kpkg(1) и The Linux kernel under Debian, Глава 7.

Юзеры должны не считая этого скачать начальный код более свежайшего ядра (либо же ядра, которое им требуется) с хоть какого предпочитаемого ими архивного веб-сайта Linux в случае недоступности пакета kernel-source-версия (где версия обозначает версию ядра). Загрузочный скипт initrd в Debian просит специального патча к ядру, называющийся initrd; смотрите http://bugs.debian.org/149236.

Подробные аннотации по использованию пакета kernel-package даны в файле /usr/share/doc/kernel-package/README.gz.

2.7.3 Особое положение о том, как работать с модулями

Пакет modconf в Debian предоставляет скрипт командного интерпретатора (/usr/sbin/modconf), который можно использовать для опции конфигурации модулей. Этот скрипт имеет меню-интерфейс, через который юзер опрашивается об особенностях загружаемых драйверов устройств в системе. Обозначенная юзером информация употребляется для опции файла /etc/modules.conf (который содержит перечень алиасов и другие аргументы, применяемые в купе с разными модулями), при всем этом анализируются файлы из каталога /etc/modutils/ и файл /etc/modules (содержащий перечень модулей, требуемых собственной загрузки при старте системы).

Подобно файлам Configure.help, призванным посодействовать в разработке пользовательских ядер, пакет modconf поставляется с набором файлов справки (в каталоге /usr/lib/modules_help/), которые предоставляют подробную информацию о соответственных аргументах каждого модуля. Примеры смотрите в The modularized 2.4 kernel, раздел 7.2.

2.7.4 Удаление из системы старенького пакета с ядром

Скрипт kernel-image-NNN.prerm (запускаемый перед удалением пакета с ядром - прим. переводчика) инспектирует на совпадение ядро, которое на данный момент работает, с ядром, которое Вы пытаетесь удалить из системы. Таким макаром, Вы сможете неопасно удалять ненадобные пакеты с ядром, используя данную команду:

Bash:
  1. dpkg --purge --force-remove-essential kernel-image-NNN

(Конечно, поменяйте NNN на номер версии и ревизии Вашего ядра.)

[


Osamu Aoki osamu#at#debian.org
Перевод Ильи В. Головко qref#at#yandex

Похожие статьи

  • Глава Четыре - Управление по Debian

    Эта секция поможет новеньким ориентироваться в мире Debian. Если Вы уже хотя бы малость использовали Unix-подобные операционные системы, то, возможно, знакомы со всем тем, о чем я тут пишу. Пожал...

  • Глава 6 - Управление пакетами в Debian

    Эта глава основывается на более старенькой версии текста британского оригинала. Проверьте британский вариант тоже. Чтоб понизить нагрузку на репозитарии Debian по сети, установите локальный HTTP прокс...

  • Глава Три - Советы по установке системы Debian

    Официальная документация по установке Debian размещается по адресу http://www.debian.org/releases/stable/, и http://www.debian.org/releases/stable/installmanual. Версии документов, находящихся в...

  • Глава Один - Введение

    Этот Справочник по Debian дает широкий обзор системы Debian в виде управления юзера после установки. Предназначается для тех, кто не опасается работы в командной строке. Я предполагаю, что ч...

  • Глава Семь - The Linux kernel under Debian

    Debian has its own method of recompiling the kernel and related modules. See also Debian и ядро, раздел 2.7. 7.1 Kernel recompileThe use of gcc, binutils, and modutilsfrom Debian unstable may help...

Теги:
Рейтинг: +11 Голосов: 106 1066 просмотров
Комментарии (0)

Нет комментариев. Ваш будет первым!

Найти на сайте: параметры поиска

Windows 7

Среда Windows 7 на первых порах кажется весьма непривычной для многих.

Windows 8

Если резюмировать все выступления Microsoft на конференции Build 2013.

Windows XP

Если Windows не может корректно завершить работу, в большинстве случаев это

Windows Vista

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