2006 г.
Справочник по Debian
[
назад ]
[
Содержание ]
[
1 ]
[ 2 ]
[
3 ]
[
4 ]
[
5 ]
[
6 ]
[
7 ]
[
8 ]
[
9 ]
[
10 ]
[
11 ]
[
12 ]
[
13 ]
[
14 ]
[
15 ]
[
A ]
[
вперед ]
Osamu Aoki, перевод Ильи В. Головко, qref.sourceforge.net
Глава 2 - Основы 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/non-free/
: Этот каталог содержит пакеты, распространение
которых ограничено требованиями ряда копирайтов.
Например, некоторые пакеты имеют лицензию, которая запрещает коммерческую
дистрибуцию. Другие могут распространяться в составе дистрибутива, но в
действительности являются shareware и несвободным ПО. Лицензия каждого из этих
пакетов должна быть изучена и учтена перед тем, как пакет будет включен в
дистрибутив на CDROM и т.д.
-
stable/contrib/
: Этот каталог содержит пакеты, которые сами по
себе являются свободными (отвечают DFSG) и могут свободно
распространяться, но неким образом зависят от
несвободного пакета из non-free секции.
Теперь, в дополнение к выше указанным расположениям пакетов, пакеты физически
располагаются в каталоге pool
(Каталог
pool
, раздел 2.1.10).
Текущее состояние по найденным ошибкам в stable дистрибутиве
отображается на странице Stable
Problems
.
2.1.4 Дистрибутив testing
Пакеты для дистрибутива testing, Debian Etch, записываются в
testing
каталог (символическая ссылка на etch/
) после
того, как они пройдут некоторое тестирование в unstable.
Физически пакеты располагаются в каталоге pool
' (Каталог pool
, раздел 2.1.10). В каталоге
testing/
также имеются подкаталоги main
,
contrib
и non-free
, которые выполняют те же функции,
что и в дистрибутиве stable/
.
Для всех архитектур, под которые собираются пакеты дистрибутива
testing, обеспечивается синхронность версий, также эти пакеты не
должны иметь зависимостей, которые могли бы привести к невозможности их
удалить, и должны иметь меньше критических ошибок, чем версия, находящаяся
сейчас в unstable. Таким образом, мы надеемся, что
testing всегда близок, чтобы стать кандидатом в релиз.
Подробности о механизме тестирования смотрите в документе http://www.debian.org/devel/testing
.
Самое последнее состояние дистрибутива testing публикуется на этих
сайтах:
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 новым кодовым названием. Замороженный
дистрибутив проходит в течение нескольких месяцев фазу тестирования с
нерегулярными обновлениями и глубокими заморозками, называемыми тест-циклами.
(Недавний процесс создания релиза Woody не создавал символическую ссылку
frozen
, таким образом frozen не был дистрибутивом, а
являлся просто стадией разработки дистрибутива 'testing'.)
Мы ведем запись ошибок в замороженном дистрибутиве, которые могут задержать
какой-либо пакет от прохождения его в релиз или ошибок, которые могут задержать
весь релиз от выхода. В момент, когда количество ошибок понизится до
максимально приемлемого значения, frozen становится стабильным, он
выпускается, а предыдущий стабильный дистрибутив становится
obsolete (устаревшим)( и переносится в архив).
2.1.7 Кодовые имена дистрибутивов Debian
Реальные имена каталогов в каталоге dists
, такие как
sarge/
и etch/
являются просто кодовыми именами.
Когда дистрибутив Debian находится в стадии разработки, он не имеет номера
версии, зато имеет кодовое имя. Такое назначение кодовых имен упрощает
зеркалирование дистрибутива Debian(если реальное имя каталога
unstable
менялось бы на stable/
(дистрибутив стал
стабильным - прим. переводчика), то пришлось бы скачивать повторно большое
количество файлов).
В настоящее время stable/
- это символическая ссылка на каталог
sarge/
, а testing/
- ссылка на etch/
.
Это означает, что Sarge является текущим стабильным дистрибутивом,
а Etch находится в стадии тестирования.
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-cache showsrc имя_моего_пакета и посмотрев на
строку "Directory:". Например, пакеты apache
хранятся в
pool/main/a/apache/
. Так как существует очень большое количество
пакетов библиотек 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
. Когда такая архитектура
входила в фазу релиза, то в первое время существовала ссылка из текущего
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://archive.debian.org/
или в
каталоге debian-archive
на каждом зеркале 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 описывают
способы ручной сборки пакетов.
Исходный код для пакетов из каталогов contrib
и
non-free
, может отсутствовать, так как пакеты из этих каталогов
формально не являются часть системы Debian.
2.2 Система управления пакетами в Debian
2.2.1 Обзор пакетов Debian
Пакеты, как правило, содержат все необходимые файлы для реализации какого-либо
набора команд или возможностей. Существует два типа пакетов Debian:
-
Бинарные пакеты, которые содержат исполняемые и
конфигурационные файлы, страницы руководств в формате man/info, информацию о
копирайтах и другую документацию. Эти пакеты распространяются в специальном
архивном формате Debian (смотрите Формат Debian пакета,
раздел 2.2.2) и обычно выделяются наличием .deb расширения
файлов. Бинарные пакеты могут быть распакованы при помощи утилиты Debian
dpkg
; подробности приведены в ее man-странице.
-
Пакеты с исходным текстом, которые состоят из
.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(8)
для манипулирования .deb файлами.
До дистрибутива Sarge включительно со всеми архивными файлами Debian можно
работать стандартными командами Unix типа ar
и tar
,
даже когда не доступны команды dpkg
.
2.2.3 Соглашение об именах файлов Debian-пакетов
Имена файлов пакетов Debian подчиняются следующему соглашению:
foo_НомерВерсии-номерDebianРевизии.deb
где foo является именем пакета. Для проверки можно определить имя
пакета, связанное с некоторым архивным файлом (.deb file) одним из
следующих способов:
-
Изучить файл "Packages" в каталоге дистрибутива на архивном сайте
Debian. Этот файл содержит записи, описывающие каждый пакет; первое поле в них
- это формальное имя пакета.
-
Использовать команду dpkg --info foo_VVV-RRR.deb (где
VVV и RRR - номера версии и ревизии запрашиваемого
пакета, соответственно). Команда отображает, помимо других данных, имя пакета,
соответствующее изучаемому архивному файлу.
Компонент VVV - это номер версии, указанный разработчиком программы
(upstream developer). Не существует стандарта о нумерации версий, поэтому они
могут иметь различные форматы типа "19990513" или
"1.3.8pre1".
Компонент RRR - это ревизионный номер Debian, который указывается
разработчиком Debian (или частным пользователем, если он пожелал собрать пакет
самостоятельно). Этот номер соответствует уровню ревизии пакета Debian,
поэтому новый ревизионный номер обычно означает изменения в Debian makefile
(debian/rules
), файле 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.
Чтобы точно определить, какие файлы будут сохранены при обновлении пакета,
выполните:
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).
-
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 имеет такой механизм, что если в системе установлено более одного
пакета, предоставляющего виртуальный пакет, то системный администратор может
установить один из них, как предпочитаемый. Для этого используется команда
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
, сначала экспортируем список выбора пакетов:
dpkg --get-selections \* > selections.txt
Затем отредактируем получившийся файл selections.txt
,
изменив строку, содержащую пакет, который хотим удержать, например
libc6
, следующим образом:
libc6 install
заменяем на:
libc6 hold
Сохраням файл и перезагружаем его в базу данных dpkg
таким
способом:
dpkg --set-selections < selections.txt
Или, если вы знаете имя пакета для удержания, просто выполните:
echo 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
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
,
команда
$ dpkg-source -x foo_версия-ревизия.dsc
распакует пакет с исходным текстом в каталог под именем
foo-версия.
Вызовите следущую команду, чтобы собрать бинарный пакет:
$ cd foo-версия
$ su -c "apt-get update ; apt-get install fakeroot"
$ dpkg-buildpackage -rfakeroot -us -uc
Далее,
# 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
установит файлы
обновления на свое место даже на работающей системе.) Иногда, однако,
обновленный пакет потребует установки новой обновленной версии еще одного
пакета, и пока он не будет установлен, установка не будет завершена.
Много людей сочли, что этот ручной способ расходует массу времени, так как
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-cache
и apt-cdrom
- это инструменты командой строки для манипулирования пакетами. Они также
функционируют как пользовательские программы-платформы (back end) для других
инструментов, таких как dselect
и aptitude
.
Для дополнительной информации установите пакет apt
и прочтите
соответствующие man-страницы: apt-get(8)
,
apt-cache(8)
, apt-cdrom(8)
, apt.conf(5)
,
sources.list(5)
, apt_preferences(5)
(Woody), а также
/usr/share/doc/apt/guide.html/index.html
.
Альтернативным источником информации является страница 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.html
или страницу по адресу dselect
Documentation for Beginners
.
2.3.6 Обновление работающей системы
Ядро (файловая система) в Debian системах поддерживает замену файлов даже во
время их использования.
Мы также предоставляем программу, называемую start-stop-daemon
,
которая используется для запуска демонов на этапе загрузки или для их останова,
когда изменяется уровень исполнения ядра (например, при переходе из
многопользовательского в однопользовательский режим или в состояние
"останов" /halt/). Та же программа используется установочными
скриптами, когда новый пакет содержит устанавливаемый демон, для остановки
работающих демонов и их рестарта, если это необходимо.
Заметьте, что система Debian не требует использования однопользовательского
режима для обновления работающей системы.
2.3.7 Скаченные и кэшированные архивные файлы .deb
Если Вы вручную скачали файлы пакетов на Ваш жесткий диск (что, кстати,
совершенно не нужно; смотрите описание программ dpkg-ftp
или APT
выше), то после установки пакетов Вы можете удалить файлы .deb из
системы.
Если же используется система APT, то эти файлы кэшируются в каталоге
/var/cache/apt/archives
. Вы можете стереть их после установки
(командой apt-get clean) или скопировать их в каталог
/var/cache/apt/archives
другой машины с целью экономии входящего
трафика при последующих установках.
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
) указывает, что первый скрипт, который должен быть
выполнен, - это скрипт /etc/init.d/rcS
. Данный скрипт запускает
все скрипты из каталога /etc/rcS.d/
по порядку (как перевести by
sourcing ? - прим. перев.) или порождая подчиненные процессы (в зависимости
от расширения имени файла) с целью инициализации системы, как то проверка и
монтирование файловых систем, загрузка модулей, запуск сетевых сервисов,
установка системных часов и пр. Далее (для совместимости) этот скрипт
выполняет файлы из каталога /etc/rc.boot/
(кроме тех, что имеют
`.' в имени файла). Любые скрипты из последнего каталога обычно
предназначаются для использования системным администратором, и применение их в
пакетах не допускается. За дополнительной информацией обращайтесь к System initialization, раздел 9.1 или
странице System run
levels and init.d scripts
Руководства по политике Debian.
2.4.2 Уровни выполнения
По окончании процесса загрузки программа init
выполняет все
стартовые скрипты в каталоге, определяемым уровнем выполенения по умолчанию
(это уровень выполнения задается элементом id в файле
/etc/inittab
). Как и большинство System V - совместимых
Unix-систем, Линукс имеет 7 уровней выполнения:
-
0 (останов системы),
-
1 (однопользовательский режим),
-
2 - 5 (различные многопользовательские режимы), и
-
6 (перезагрузка системы).
Системы Debian идут с id=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"
# /etc/init.d/sendmail reload
посылает демону sendmail сигнал, побуждающий его перечитать конфигурационный
файл.
2.4.3 Настройка процесса загрузки
Debian не использует свойственный BSD каталог rc.local для
настройки процесса загрузки; вместо этого он предоставляет следующий механизм.
Предположим, системе нужно на этапе загрузки или при входе в определенный
(System V) уровень выполнения исполнить скрипт foo. Тогда
системный администратор должен сделать:
-
Разместить скрипт foo в каталоге
/etc/init.d/
.
-
Выполнить Debian-команду
update-rc.d
с соответствующими
аргументами, чтобы создать символические ссылки между каталогами
rc?.d (задаваемый в командой строке) и файлом
/etc/init.d/foo
. Здесь ? - это номер от 0 до 6,
который соответствует одному из System V уровней выполнения.
-
Перезагрузить систему.
Команда 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 ссылается на уровни выполнения по умолчанию, которые
могут быть от 2 до 5. Аргумент 19 обеспечивает, что скрипт
foo вызывается до любых других с номером 20 или больше.
2.5 Поддержание многообразия программного обеспечения
Debian предлагает несколько путей удовлетворения любых потребностей системного
администратора без нарушений в системе:
Любые файлы в каталоге /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
. Данный пакет содержит скрипт для построения
пакета с ядром и обеспечивает такую возможность посредством запуска команды:
# make-kpkg kernel_image
в каталоге верхнего уровня исходных текстов ядра. При помощи следующей команды
можно получить справку:
# make-kpkg --help
также доступную на man-странице make-kpkg(8)
и 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 Альтернативные системные загрузчики
Для использования альтернативных системных загрузчиков вроде grub
или loadlin
, скопируйте скомпилированное ядро bzimage
в требуемое конкретным загрузчиком место (например, в /boot/grub
или на раздел MS-DOS).
2.7.4 Загрузочные дискеты, настроенные пользователем
Задача создания загрузочных дискет, настроенных под потребности пользователя,
весьма упрощается при использовании пакета boot-floppies
, обычно
находящегося в секции admin архива Debian. Скрипты командного
интерпертатора в этом пакете производят загрузочные дискеты в формате программы
syslinux
. Они представляют собой дискеты в формате MS-DOS с
главной загрузочной записью, измененной таким образом, что они непосредственно
загружают Linux (или другую операционную систему, определенную в файле
syslinux.cfg
на дискете). Другие скрипты этого пакета производят
аварийные корневые диски, а также могут сделать копию базовых дисков.
Вы найдете больше информации об этом в файле
/usr/doc/boot-floppies/README
после установки пакета
boot-floppies
.
2.7.5 Специальное положение о том, как работать с модулями
Пакет 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.6 Удаление из системы старого пакета с ядром
Скрипт kernel-image-NNN.prerm
(запускаемый перед
удалением пакета с ядром - прим. переводчика) проверяет на совпадение ядро,
которое сейчас работает, с ядром, которое Вы пытаетесь удалить из системы.
Таким образом, Вы можете безопасно удалять ненужные пакеты с ядром, используя
данную команду:
dpkg --purge --force-remove-essential kernel-image-NNN
(Конечно же, замените NNN на номер версии и ревизии Вашего ядра.)
[ назад ]
[ Содержание ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
[ 7 ]
[ 8 ]
[ 9 ]
[ 10 ]
[ 11 ]
[ 12 ]
[ 13 ]
[ 14 ]
[ 15 ]
[ A ]
[ вперед ]