Эта статья обеспечивает основную информацию по системе Debian для пользователей. За авторитетной информацией обращайтесь к документам:
ссылки на которые приведены в References, раздел 15.1.
Если вы ищете менее детализированные описания (в форме HOW-TO), переходите к главе Debian package management, Глава 6 или другие соответствующие главы.
Эта статья основана на документах, взятых из "Debian FAQ", тщательным образом реорганизованного в форму введения для обычного администратора системы Debian.
Программное обеспечение, сформированное в debian-пакеты, доступно в одной из
нескольких древовидных структур каталогов на каждом зеркальном сайте Debian
Debian mirror site
по
протоколам FTP или HTTP.
Следующие каталоги могут быть найдены на каждом зеркале Debian в каталоге
debian
:
dists/
:Contents-*.gz
,
и файлы Packages.gz
могут быть до сих пор и здесь.
pool/
:tools/
:doc/
:indices/
:project/
:project/experimental/
:project/orphaned/
:
Обычно существует три дистрибутива Debian в каталоге dists
. Это
дистрибутив stable, дистрибутив testing и дистрибутив
unstable. Иногда может быть еще и frozen. Каждый
дистрибутив определяется как символическая ссылка на реальный каталог под
кодовым именем в каталоге dists.
Пакеты stable дистрибутива Debian Woody (3.0r0) записываются в
каталог stable
(символическая ссылка на каталог
woody/
):
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
.
Пакеты для дистрибутива testing, Debian Sarge, записываются в
testing
каталог (символическая ссылка на sarge/
)
после того, как они пройдут некоторое тестирование в 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
критические
ошибки
ошибки в базовой
системе
ошибки в
стандартных пакетах и пакетах задач
замечания по другим ошибкам и их
исправлениям
Пакеты для unstable дистрибутива, который всегда имеет кодовое имя
"Sid", сохраняются в каталоге unstable
(символическая
ссылка на sid/
) сразу после того, как их закачают в Debian-архив и
они находятся там до их перемещения в testing/
. Сами пакеты
размещаются в каталоге pool
(Каталог
pool
, раздел 2.1.10). В каталоге unstable также
существуют подкаталоги main
, contrib
и
non-free
, которые выполняют те же функции, что и в дистрибутиве
stable/
. Дистрибутив unstable содержит снимок
разрабатываемой в настоящий момент системы. Вы можете использовать и
тестировать эти пакеты, осознавая состояние их готовности. Преимущество от
использования дистрибутива unstable в том, что вы всегда
используете самое последнее ПО из проекта Debian — оно является и самым
нестабильным.
Текущее состояние ошибок в дистрибутиве unstable отображается на
странице Unstable
Problems
.
Когда дистрибутив testing достаточно созреет, он замораживается,
означая тем самым, что новый код более не принимается, а только исправления
ошибок, если таковые необходимы. Также, создается новое тестируемое дерево в
каталоге dists c новым кодовым названием. Замороженный
дистрибутив проходит в течение нескольких месяцев фазу тестирования с
нерегулярными обновлениями и глубокими заморозками, называемыми тест-циклами.
(Недавний процесс создания релиза Woody не создавал символическую ссылку
frozen
, таким образом frozen не был дистрибутивом, а
являлся просто стадией разработки дистрибутива 'testing'.)
Мы ведем запись ошибок в замороженном дистрибутиве, которые могут задержать какой-либо пакет от прохождения его в релиз или ошибок, которые могут задержать весь релиз от выхода. В момент, когда количество ошибок понизится до максимально приемлемого значения, frozen становится стабильным, он выпускается, а предыдущий стабильный дистрибутив становится obsolete (устаревшим)( и переносится в архив).
Реальные имена каталогов в каталоге dists
, такие как
woody/
и sarge/
являются просто кодовыми именами.
Когда дистрибутив Debian находится в стадии разработки, он не имеет номера
версии, зато имеет кодовое имя. Такое назначение кодовых имен упрощает
зеркалирование дистрибутива Debian(если реальное имя каталога
unstable
менялось бы на stable/
(дистрибутив стал
стабильным - прим. переводчика), то пришлось бы скачивать повторно большое
количество файлов).
В настоящее время stable/
- это символическая ссылка на каталог
woody/
, а testing/
- ссылка на sarge/
.
Это означает, что Woody является текущим стабильным дистрибутивом,
а Sarge находится в стадии тестирования.
unstable/
- это постоянная символическая ссылка на каталог
sid/
, так как Sid является всегда нестабильным дистрибутивом.
Вот кодовые имена, которые уже использовались: "Buzz" для релиза 1.1, "Rex" для релиза 1.2, "Bo" для релизов 1.3.x, "Hamm" для релиза 2.0, "Slink" для релиза 2.1, "Potato" для релиза 2.2, "Woody" для релиза 3.0 и "Sarge" для релиза 3.1.
Имена дистрибутивов до сих пор были именами персонажей из фильма Toy Story от студии Pixar.
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:
Реализация пула пакетов
.
Когда не существовало современного 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).
incoming/
Закаченные пакеты, находящиеся в http://incoming.debian.org/
проходят проверку для гарантии того, что они в действительности отправлены
разработчиком Debian (в противном случае, т.е. случае закачки пакета лицом, не
являющимся мейнтейнером - закачка NMU, пакет помещается в под-каталог
DELAYED
). Один раз в день пакеты из incoming/
перемещаются в unstable/
.
В крайних случаях Вы можете пожелать установить пакеты из
incoming/
до того, как они достигнут unstable/
.
В то время, как самые последние дистрибутивы Debain хранятся в каталоге
debian
на каждом зеркале Debian
, архивы старых
дистрибутивов типа Slink хранятся по адресу http://archive.debian.org/
или в
каталоге debian-archive
на каждом зеркале Debian.
Пакеты старых testing и unstable дистрибутивов могут
быть найдены по адресу http://snapshot.debian.net/
.
Внутри каждого основного дерева каталогов (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
.
Для всех компонентов системы Debian имеется исходный код. Более того, условия лицензий большинства программ в системе требуют, чтобы исходный код распространялся вместе с программой, либо был бы способ его получить.
Обычно исходный код располагается в каталогах source
, находящиеся
по-соседству с каталогами архитектур, или, с недавнего времени, в каталоге
pool
(смотрите Каталог pool
,
раздел 2.1.10). Чтобы получить исходный код пакета, не вникая в структуру
архива Debian, используйте команду apt-get source
mypackagename.
Некоторые пакеты, например pine
, доступны только в виде исходных
текстов из-за ограничений лицензии. (Недавно был представлен пакет
pine-tracker
для облегчения установки Pine.) Процедуры, описанные
в Port a package to the stable
system, раздел 6.4.10 и Packaging,
раздел 13.9 описывают способы ручной сборки пакетов.
Исходный код для пакетов из каталогов contrib
и
non-free
, может отсутствовать, так как пакеты из этих каталогов
формально не являются часть системы Debian.
Пакеты, как правило, содержат все необходимые файлы для реализации какого-либо набора команд или возможностей. Существует два типа пакетов Debian:
dpkg
; подробности приведены в ее man-странице.
dpkg-source
упаковывает и распаковывает
пакеты Debian с исходными текстами; подробности смотрите в ее man-странице.
Установка программного обеспечения при помощи пакетной системы использует так
называемые "зависимости", которые тщательно спроектированы
мейнтейнерами пакета. Эти зависимости задокументированы в файле
control
, связанным с каждым пакетом. Например, пакет, содержащий
компилятор GNU C (gcc
) "зависит" от пакета
binutils
, который включает в себя компоновщик и транслятор. Если
пользователь попытается установить gcc
без предварительной
установки binutils
, система управления пакетами (dpkg) выведет
сообщение об ошибке, что также необходима установка binutils
, и
прервет установку gcc
. (Однако, это поведение может быть изменено
по требованию пользователя; смотрите dpkg(8)
.) Дополнительные
подробности смотрите Зависимости пакетов, раздел 2.2.8
ниже.
Инструменты для работы с пакетами Debian можно использовать для того, чтобы:
"Пакет" Debian или архивный файл Debian содержит исполняемые файлы, библиотеки и документацию, ассоциированные с некоторым программмным комплектом или набором связанных программ. Обычно архивный файл Debian имеет имя файла с расширением .deb. [1]
Внутренние подробности этого формата бинарного пакета Debian описывются на
deb(5)
man-странице. Так как внутренний формат может изменяться
(от релиза к релизу Debian), всегда используйте страницу
dpkg-deb(8)
для манипулирования .deb файлами.
До дистрибутива Sarge включительно со всеми архивными файлами Debian можно
работать стандартными командами Unix типа ar
и tar
,
даже когда не доступны команды dpkg
.
Имена файлов пакетов Debian подчиняются следующему соглашению:
foo_НомерВерсии-номерDebianРевизии.deb
где foo является именем пакета. Для проверки можно определить имя пакета, связанное с некоторым архивным файлом (.deb file) одним из следующих способов:
Компонент VVV - это номер версии, указанный разработчиком программы (upstream developer). Не существует стандарта о нумерации версий, поэтому они могут иметь различные форматы типа "19990513" или "1.3.8pre1".
Компонент RRR - это ревизионный номер Debian, который указывается
разработчиком Debian (или частным пользователем, если он пожелал собрать пакет
самостоятельно). Этот номер соответствует уровню ревизии пакета Debian,
поэтому новый ревизионный номер обычно означает изменения в Debian makefile
(debian/rules
), файле Debian control
(debian/control
), скриптах установки или удаления
(debian/p*
), или конфигурационных файлах, используемых в пакете.
Сохранение файлов настройки реализуется через механизм "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).
Скрипты сопровождения Debian это исполняемые скрипты, автоматически выполняемые
перед или после установки пакета. Вместе с файлом control
, эти
файлы являются частью секции "control" архивного файла Debian.
В частности, такими файлами являются:
В настоящее время все control-файлы могут быть найдены в каталоге
/var/lib/dpkg/info
. Файлы, относящиеся к пакету foo
начинаются с имени "foo" и, соответственно, имеют расширение файла
типа "preinst", "postinst", и так далее. Файл
foo.list
в этом каталоге описывет все файлы, установленные с
пакетом foo. (Заметьте, что месторасположение этих файлов
является внутренней особенностью программы dpkg
, и поэтому может
меняться.)
В помощь системе управления пакетами каждому пакету Debian мейнтейнерами дистрибутива назначается приоритет priority. Приоритеты бывают:
Сюда относятся все инструменты, которые необходимы для исправления повреждений
системы. Вы не должны удалять эти пакеты, иначе Ваша система может стать
неработоспособной, и Вы даже не сможете использовать программу
dpkg
, чтобы вернуть все назад. Системы с установленными только
пакетами Required могут не соответствовать для решения большинства задач, но
они имеет достаточно функций для того, чтобы позволить системному
администратору загрузить и установить дополнительное программное обеспечение.
Пакеты с таким приоритетом - это остальные пакеты, без которых система не будет нормально работать или не будет удобной. Сюда не относятся пакеты типа Emacs, X11, TeX или любые другие крупные приложения. Эти пакеты составляют минимальную инфраструктуру.
Это то, что устанавливается по умолчанию, если пользователь ничего не выбрал. "Standard" не включает многих крупных приложений, но уже включает Emacs (Это больше часть инфрастурктуры, чем приложение.) и разумное подмножество систем Tex и LaTeX (разумное настолько, чтобы не требовать X11).
Это включает X11, полностью TeX и множество приложений.
Пожалуйста, заметьте разницу между "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".
Виртуальный пакет - это общее имя, употребляемое к любому из пакетов некой
группы, все пакеты из которой обеспечивают подобную базовую функциональность.
Например, пакеты tin
и trn
являются программами для
чтения news-конференций, и любая из них должна, следовательно, удовлетворять
зависимость программы, требующей для нормального своего функционирования
установленной программы чтения news-конференций. Эти пакеты, таким образом,
обеcпечивают "виртуальный пакет", называемый
news-reader
.
Подобным образом, оба пакета exim
и sendmail
обеспечивают функциональность почтового транспортного агента. Следовательно,
они предоставляют виртуальный пакет mail-transport-agent
. Если
один из них установлен, то любая программа, зависящая от наличия установленного
почтового транспортного агента будет удовлетворена существованием этого
виртуального пакета.
Debian имеет такой механизм, что если в системе установлено более одного
пакета, предоставляющего виртуальный пакет, то системный администратор может
установить один из них, как предпочитаемый. Для этого используется команда
update-alternatives
, описываемая далее Alternative commands, раздел
6.5.3.
Система пакетов в Debian имеет ряд "зависимостей" пакетов, которые предназначены для того, чтобы показать (одним признаком) уровень, на котором программа A может работать независимо от существования программы B в данной системе:
Более подробную информацию об использовании каждого из этих терминов можно найти в Руководстве по созданию пакетов и в Руководстве по политике.
Заметьте, что программа dselect
имеет более тонко настроенный
контроль над пакетами, указываемыми зависимостями вида
рекомендует и предлагает, нежели программа
apt-get
, которая просто вытаскивает все пакеты, указанные в
зависимости зависит и не трогает все пакеты, указанные в
зависимостях пакета рекомендует и предлагает.
Обе программы в современном виде используют за основу систему APT.
"Pre-depends" - специальный вид зависимости. В случае обычного
пакета программа dpkg
распаковывает архивный файл пакета (т.е.,
файл .deb) вне зависимости от существования в системе файлов, от
которых зависит данный пакет. Распаковка же, по существу, означает, что
программа dpkg
извлечет из архива .deb файлы,
подлежащие установке на Вашу файловую систему и разместит их на своих местах.
Если данный пакет зависит (depends) от наличия неких других
пакетов на Вашей системе, то программа dpkg
откажется завершить
установку (выполняя действие "configure") до тех пор, пока требуемые
пакеты не будут установлены.
Однако, существуют некоторые пакеты, даже распаковка которых при помощи
программы dpkg
будет отменена, пока не будут разрешены
определенные зависимости. Считается, что такие пакеты критично зависят
("pre-depend") (а как еще перевести "pre-depends? - прим.
переводчика) от присутствия некоторых других пакета(ов). Проект Debian
предоставил этот механизм, чтобы поддержать безопасное обновление систем с
формата a.out на ELF формат, когда был критичен
порядок, в котором пакеты распаковываются. Бывают еще другие
ситуации крупных обновлений, где этот метод полезен, например, в случае пакетов
с приоритетом "Required" и их зависимостями от libc.
Замечу, что более детальная информация об этом может быть найдена в Руководстве по созданию пакетов.
Статус пакета может быть "unknown" (неизвестный), "install"
(установить), "remove" (удалить), "purge" (очистить) или
"hold" (удержать). Эти предписывающие флаги показывают то, что
пользователь желает сделать с пакетом (делая свой выбор в секции
"Select" программы dselect
, или прямо вызывая программу
dpkg
).
Смысл эти значений:
Существует два механизма для удержания пакета от обновления: через программу
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
; глава Overview of
/etc/apt/preferences
, раздел 6.2.8 тоже содержит краткое
объяснение.
Пакеты с исходным текстом располагаются в каталоге source
, либо Вы
можете скачать их вручную или использовать APT
apt-get source foo
чтобы их получить (смотрите man-страницу apt-get(8)
, чтобы
настроить APT для этого).
Чтобы скомпилировать исходный текст пакета 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"
чтобы установить только что собранный бинарный пакет. Смотрите Port a package to the stable system, раздел 6.4.10.
За детальной информацией по созданию новых пакетов читайте Руководство
новым мейнтейнерам (New Maintainers' Guide), имеющееся в пакете
maint-guide
или по адресу http://www.debian.org/doc/manuals/maint-guide/
.
Одной из задач Debian является обеспечение совместимого пути обновления и надежного процесса обновления, и мы всегда делали все от нас зависящее по созданию таких новых релизов, которые способны гладко обновить предыдущие. Пакеты предупредят пользователя о важных моментах в процессе обновления и, зачастую, предоставят решение возможных проблем.
Вам также нужно изучить документ Release Notes, который описывает подробности
конкретных обновлений, размещающийся на всех компакт-дисках с Debian, или по
адресам http://www.debian.org/releases/stable/releasenotes
и http://www.debian.org/releases/testing/releasenotes
.
Практическое руководство по обновлению представлено в Debian package management, Глава 6. Эта секция лишь описывает основные принципы.
Всегда можно просто, используя анонимный доступ по FTP или через программу
wget
зайти в архив Debian, внимательно изучить каталоги, найти
желаемый файл, скачать его, и, наконец, установить его при помощи программы
dpkg
. (Заметьте, что программа dpkg
установит файлы
обновления на свое место даже на работающей системе.) Иногда, однако,
обновленный пакет потребует установки новой обновленной версии еще одного
пакета, и пока он не будет установлен, установка не будет завершена.
Много людей сочли, что этот ручной способ расходует массу времени, так как Debian развивается очень быстро — обычно каждую неделю закачивается множество новых пакетов. И их число увеличивается перед новым главным релизом. Чтобы иметь дело с таким потоком, пользователи предпочитают использовать автоматизированную программу для обновления. Для этого существует несколько специальных инструментов управления пакетами.
Система управления пакетами в Debian имеет две цели: манипулирование собственно
файлами пакетов и выборка файлов пакетов из архива Debian. Программа
dpkg
выполняет первую задачу, система APT and программа
dselect
последнюю.
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.
Система 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
.
dselect
Это программа представляет собой управляемый с помощью меню интерфейс к системе
управления пакетами в Debian. Она особенно полезна в первых установках или
крупномасштабных обновлениях. Смотрите dselect
, раздел 6.2.3.
Для дополнительной информации установите пакет install-doc
и
изучите файл /usr/share/doc/install-doc/dselect-beginner.en.html
или страницу по адресу dselect
Documentation for Beginners
.
Ядро (файловая система) в Debian системах поддерживает замену файлов даже во время их использования.
Мы также предоставляем программу, называемую start-stop-daemon
,
которая используется для запуска демонов на этапе загрузки или для их останова,
когда изменяется уровень исполнения ядра (например, при переходе из
многопользовательского в однопользовательский режим или в состояние
"останов" /halt/). Та же программа используется установочными
скриптами, когда новый пакет содержит устанавливаемый демон, для остановки
работающих демонов и их рестарта, если это необходимо.
Заметьте, что система Debian не требует использования однопользовательского режима для обновления работающей системы.
Если Вы вручную скачали файлы пакетов на Ваш жесткий диск (что, кстати,
совершенно не нужно; смотрите описание программ dpkg-ftp
или APT
выше), то после установки пакетов Вы можете удалить файлы .deb из
системы.
Если же используется система APT, то эти файлы кэшируются в каталоге
/var/cache/apt/archives
. Вы можете стереть их после установки
(командой apt-get clean) или скопировать их в каталог
/var/cache/apt/archives
другой машины с целью экономии входящего
трафика при последующих установках.
Программа dpkg
хранит записи о пакетах, которые были распакованы,
сконфигурированы, удалены, и/или очищены, но не хранит (в настоящее время)
журнал действий пользователя на терминале во время работы с пакетами.
Самый простой путь исправить это - это запускать сессию программы
dpkg
, dselect
, apt-get
, и пр. c
программой script(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.
По окончании процесса загрузки программа init
выполняет все
стартовые скрипты в каталоге, определяемым уровнем выполенения по умолчанию
(это уровень выполнения задается элементом id в файле
/etc/inittab
). Как и большинство System V - совместимых
Unix-систем, Линукс имеет 7 уровней выполнения:
Системы 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/exim4 reload
посылает демону exim4 сигнал, побуждающий его перечитать конфигурационный файл.
Debian не использует свойственный BSD каталог rc.local для настройки процесса загрузки; вместо этого он предоставляет следующий механизм.
Предположим, системе нужно на этапе загрузки или при входе в определенный (System V) уровень выполнения исполнить скрипт foo. Тогда системный администратор должен сделать:
/etc/init.d/
.
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 или больше.
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 их
не будет перезаписывать при обновлениях, пока системный администратор явным
образом этого не запросит.
Система Debian интернациональна и обеспечивает отображение и ввод символов на многих языках как в консоли, так в системе X Window. Множество документов, man-страницы и системные сообщения переведены на многие языки, и их (языков) число растет. В процессе установки Debian просит пользователя выбрать язык инсталляции ( и даже иногда его местную вариацию).
Если Ваша установленная система не поддерживает все нужные Вам языковые особенности, или Вам нужно изменить язык или установить другую раскладку клавиатуры для Вашего языка, смотрите Localization, раздел 9.7.
Смотрите The Linux kernel under Debian, Глава 7.
Необходимо понимать политку 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
нужно знать об этом. Это
и требует включения самых последних заголовочных файлов.
Пользователям, желающим собрать настроенное ими ядро, предлагается скачать
пакет 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
.
Для использования альтернативных системных загрузчиков вроде grub
или loadlin
, скопируйте скомпилированное ядро bzimage
в требуемое конкретным загрузчиком место (например, в /boot/grub
или на раздел MS-DOS).
Задача создания загрузочных дискет, настроенных под потребности пользователя,
весьма упрощается при использовании пакета boot-floppies
, обычно
находящегося в секции admin архива Debian. Скрипты командного
интерпертатора в этом пакете производят загрузочные дискеты в формате программы
syslinux
. Они представляют собой дискеты в формате MS-DOS с
главной загрузочной записью, измененной таким образом, что они непосредственно
загружают Linux (или другую операционную систему, определенную в файле
syslinux.cfg
на дискете). Другие скрипты этого пакета производят
аварийные корневые диски, а также могут сделать копию базовых дисков.
Вы найдете больше информации об этом в файле
/usr/doc/boot-floppies/README
после установки пакета
boot-floppies
.
Пакет modconf
в Debian предоставляет скрипт командного
интерпретатора (/usr/sbin/modconf
), который можно использовать для
настройки конфигурации модулей. Этот скрипт имеет меню-интерфейс, через
который пользователь опрашивается об особенностях загружаемых драйверов
устройств в системе. Указанная пользователем информация используется для
настройки файла /etc/modules.conf
(который содержит список алиасов
и другие аргументы, используемые в сочетании с различными модулями), при этом
анализируются файлы из каталога /etc/modutils/
и файл
/etc/modules
(содержащий список модулей, требуемых своей загрузки
при старте системы).
Подобно файлам Configure.help
, призванным помочь в создании
пользовательских ядер, пакет modconf
поставляется с набором файлов
справки (в каталоге /usr/share/modconf/
), которые предоставляют
подробную информацию о соответствующих аргументах каждого модуля. Примеры
смотрите в The modularized 2.4
kernel, раздел 7.2.
Скрипт kernel-image-NNN.prerm
(запускаемый перед
удалением пакета с ядром - прим. переводчика) проверяет на совпадение ядро,
которое сейчас работает, с ядром, которое Вы пытаетесь удалить из системы.
Таким образом, Вы можете безопасно удалять ненужные пакеты с ядром, используя
данную команду:
# dpkg --purge --force-remove-essential kernel-image-NNN
(Конечно же, замените NNN на номер версии и ревизии Вашего ядра.)
Справочник по Debian
CVS, Пон 3. Апр 2005, 22:59:13 UTCosamu@debian.org
dsewell@virginia.edu