2006 г.
Справочник по Debian
[
назад ]
[
Содержание ]
[
1 ]
[
2 ]
[
3 ]
[
4 ]
[
5 ]
[ 6 ]
[
7 ]
[
8 ]
[
9 ]
[
10 ]
[
11 ]
[
12 ]
[
13 ]
[
14 ]
[
15 ]
[
A ]
[
вперед ]
Osamu Aoki, перевод Ильи В. Головко, qref.sourceforge.net
Глава 6 - Управление пакетами в Debian
Чтобы снизить нагрузку на репозитарии Debian по сети, установите локальный HTTP
прокси-сервер squid
для кэширования пакетов, скачиваемых системой
APT, и настройте переменную окружения http_proxy или задайте
значение параметру http в файле /etc/apt/apt.conf
(для того, чтобы APT использовала этот прокси-сервер - прим. переводчика).
Эти меры существенно улучшат производительность сетевых обновлений, особенно,
если Вы имеете несколько Debian-машин в сети.
Although the pinning feature of apt_preferences(5)
is powerful, it
does not solve all the dependency issues since dependency requirements tend to
pull in newer versions of other fundamental program packages.
Использование метода, описанного в chroot
, раздел 8.6.34
предпочтительно для обеспечения стабильности системы и одновременно доступа к
последним версиям программного обеспечения.
Хотя эта глава предназначена для использования на Woody-версии Debian, большая
часть информации также применима к Potato-версии (за исключением
apt_preferences(5)
и разделов, связанных с
/etc/apt/preferences
).
6.1 Введение
Если чтение всей документации разработчиков слишком утомительно для Вас, то
сначала прочтите эту главу и потом наслаждайтесь всей мощью системы Debian,
используя дистрибутивы testing/unstable :-).
6.1.1 Основные инструменты
dselect – инструмент для управления пакетами с меню-подобным интерфейсом (высокоуровневый инструмент)
dpkg – инсталлятор пакетов (основная утилита для работы с файлами-пакетами)
apt-get – инсталлятор пакетов (утилита для работами с репозитариями пакетов,
интерфейс командной строки к системе APT)
tasksel – инсталлятор задач (набора пакетов)
aptitude – инсталлятор пакетов (пакеты & задачи, интерфейс к APT на базе ncurses)
deity – альтернатива ncurses-интерфейса к APT
synaptic, gsynaptic – графические утилиты для работы с APT
Данные инструменты принадлежат разным уровням работы с пакетами.
dselect
работает над системой APT (команда apt-get
) и
программой dpkg
.
APT использует файлы /var/lib/apt/lists/*
для отслеживания
доступных пакетов, в то время как dpkg
для этих целей использует
файл /var/lib/dpkg/available
. Если Вы установили пакеты
непосредственно используя программу apt-get
или подобными
средствами (aptitude
), то перед тем, как запускать команды
dselect select, tasksel или dpkg -l, не
забудьте обновить файл /var/lib/dpkg/available
через пункт меню
[U]pdate программы dselect
или, запустив в командной
строке команду "dselect update".
Так как пакеты имееют зависимости, программа apt-get
автоматически
при установке пакета выбирает к установке дополнительные пакеты, от которых
устанавливаемый пакет зависит (depends), но она не трогает
пакеты, связанные с ним зависимостями "рекомендует"
(recommends) и "предлагает"
(suggests). В то же время программа dselect
через меню предлагает установить пакеты, основываясь на зависимостях вида
"зависит" (depends), "рекомендует"
(recommends) и "предлагает"
(suggests). Программа aptitude
имеет опцию для
автоматической установки всех пакетов, выбираемых этими видами зависимостей.
Смотрите Зависимости пакетов, раздел
2.2.8.
6.1.2 Удобные инструменты
apt-cache - проверка локального кэша пакетов
dpkg-reconfigure - повторная конфигурация уже установленного пакета (если он использует debconf)
dpkg-source - управляет исходными файлами пакета
dpkg-buildpackage - aвтоматизирует сборку пакета
...
6.2 Основы управления пакетами в Debian
Вы можете установить набор пакетов, называемых задачей, установить
пакеты по одному или обновить систему, используя инструменты управления
пакетами, описанные ниже . Также обращайтесь к Советы по установке системы Debian, Глава 3, Обновление до дистрибутива testing, Глава
5 и Rescue editors, раздел 11.2.
6.2.1 Установка задачи при помощи программ tasksel
или aptitude
Программа tasksel
является Дебиановским Установщиком
Задач, который используется при установке системы в упрощенном
"simple" режиме.
Когда Вам в системе нужна некоторая функциональность, которая реализуется
множеством пакетов, использование tasksel
- самый лучший способ
это сделать. Последовательность команд должна быть такой:
# dselect update
# tasksel
Программа aptitude
также предлагает доступ к задачам. Но
она не только дает Вам возможность выбрать для установки задачу, но и
позволяет выборочно через меню отменить установку некоторых пакетов из состава
задачи.
6.2.2 Установка системы APT - нет перевода!!!!
If you try to track mixed environment as described here, you may likely to hit
some package dependency conflicts. It is good idea not to mix flavors.
Followings are for people who is willing to experiment knowing some risks.
For selective upgrade while tracking the testing distribution, the
APT system (>Woody) must be set up as in Перевод системы APT к ее
Woody-версии, раздел 5.1 to use apt_preferences(5)
features.
First, add the sources for stable, testing, and
unstable to your /etc/apt/sources.list
. Then, edit
/etc/apt/preferences
to set the proper Pin-Priority. [31]
Package: *
Pin: release a=stable
Pin-Priority: 500
Package: *
Pin: release a=testing
Pin-Priority: 600
Package: *
Pin: release a=unstable
Pin-Priority: 50
6.2.3 Программа dselect
После старта программа dselect
автоматически выбирает все пакеты с
приоритетами "Required" (требующиеся), "Important" (важные)
и "Standard" (стандартные). В системе Potato некоторые большие
пакеты вроде teTex или Emacs попадали в этот список, и самым лучшим был их
пропуск при начальной установке системы путем ручного снятия отметки
соответствущих пакетов (нажатие клавиши `_'). В Woody же эти пакеты уже
помечены приоритетом "Optional"" (опициональный).
Программа dselect
имеет несколько необычный интерфейс
пользователя. Существует четыре несколько странных команды (регистр букв
важен!):
Клавиша Действие
Q Выход. Подтвердить текущий выбор пакетов и выйти из программы.
(не принимать во внимание зависимости)
R Вернуть все назад! Я не имел это ввиду.
D Проклятье! Мне не волнует, что думает dselect. Просто сделай это!
U установить все пакеты как рекомендуемые
При помощи D и Q Вы можете выбрать конфликтующие
пакеты (на свой страх и риск). С этими командами следует обращаться осторожно.
В настоящее время dselect
является достаточно продвинутым
инструментом с меню-интерфейсом, который предлагает тонкий контроль над выбором
пакетов, в частности, по зависимостям suggests (предлагает) и
recommends (рекомендует).
Для снижения "разговорчивости" программы добавьте в файл
/etc/dpkg/dselect.cfg
строку с опцией "expert". Для
медленных машин Вы можете запускать dselect
на другой более
быстрой машине для поиска нужных пакетов, а на медленной машине уже
использовать apt-get install для их установки.
dselect
не дает доступ к пакетам, которые не preferred by the
Pin-Priority.
6.2.4 Программа aptitude
aptitude
- это новый инстраллятор пакетов с меню-интерфейсом,
похожий на dselect
. Он также может использоваться как
альтернативна консольной команде apt-get
. Изучите страницу
aptitude(1)
.
Программа aptitude
обрабатывает одно-клавишные команды, вводимые в
нижнем регистре
Клавиша Действие
F10 Меню
? Помощь по клавишами управления
u Обновить информацию об доступных пакетах в репозитарии
g Скачать и установить выбранные пакеты
q Выйти из текущего экрана с сохранением изменений
x Выйти без сохранения изменений
Enter Просмотр информации о пакете
Программа aptitude
опционально может автоматически устанавливать
пакеты, основываясь на зависимостях не только depends, но
recommends и suggests. Вы можете изменять ее
поведение, выбрав в меню F10 -> Options -> Dependency
handling.
Программа aptitude
предлагает доступ ко всем версиям пакета.
6.2.5 Команды apt-cache
и apt-get
While tracking testing as described in the above example, мы можем
управлять системой следующими командами:
-
apt-get -u install package/unstable
Устанавливает пакет package из unstable-дистрибутива,
при этом пакеты, от которых он зависит, берутся из
testing-дистрибутива.
-
apt-get -u install -t unstable package
Устанавливает пакет package из unstable-дистрибутива,
при этом, пакеты от которых он зависит, также берутся из unstable
при помощи установки Pin-Priority unstable в 990.
В приведенных выше примерах использование опции -u гарантирует,
что apt-get
выведет список всех пакетов, подлежащих обновлению, и
запросит подтверждение у пользователя перед началом своих действий. Вот так
можно установить опцию -u в режим по умолчанию:
$ cat >> /etc/apt/apt.conf << .
// Всегда показывать пакеты для обновления (-u)
APT::Get::Show-Upgraded "true";
.
Используйте опцию -s для имитации обновления без выполнения
каких-либо действительных операций.
6.2.6 Tracking a flavor of Debian distribution
Depending on your preference for a flavor of Debian to track, you can change
the sample /etc/apt/preferences
in Установка системы APT - нет перевода!!!!, раздел 6.2.2
to fit your needs:
track stable: change Pin-Priority of testing to 50
track testing: keep settings as shown above
track testing(unstable): change Pin-Priority of unstable to 500
track unstable(testing): change Pin-Priority of unstable to 800
A guideline for the choice of Pin-Priority is to move from the top to bottom in
the above table as the time moves from a time immediately after a distribution
release to a time of freeze for the next release.
Caution: tracking the testing flavor of Debian has a side effect
of providing very slow security fixes.
If you mix flavors of Debian, testing with stable or
unstable with stable, you will be likely to pull in
unintentionally key packages from testing or unstable
that may be buggy. So be warned.
Examples of /etc/apt/preferences
which lock some key packages to
the more mature version while tracking the less mature version for other
nonessential packages are available in the examples
subdirectory
as preferences.testing
and
preferences.unstable
. On the other hand,
preferences.stable
forces all packages to be downgraded to
stable.
6.2.7 Откат всех пакетов до уровня stable
Чтобы откатить все пакеты до уровня stable, отредактируйте файл
/etc/apt/preferences
следующим образом:
Package: *
Pin: release a=stable
Pin-Priority: 1001
и запустите команду "apt-get upgrade", которая вызовет
принудительный откат из-за значения Pin-priority > 1000. Нужно
предупредить, что могут возникнуть небольшие накладки с зависимостями.
6.2.8 Обзор файла /etc/apt/preferences
В примере файла /etc/apt/preferences
, представленного в разделе Установка системы APT - нет перевода!!!!, раздел 6.2.2,
строка "Package: *" в первой строчке означает, что эта секция
применяется ко всем пакетам. Вы можете использовать имя пакета вместо
"*" для указания значения Pin-Priority этого пакета.
Во второй строчке запись "Pin: release a=stable" означает, что
apt-get
получает файл Packages.gz
из архива Debian, у
которого в файле Release
есть строка "Archive: stable".
В последней строчке запись "Pin-Priority: 500" указвает значение
Pin-Priority равное 500.
Если существует несколько пакетов с одним и тем же именем, устанавливается
пакет с наибольшим значением Pin-Priority
В частности, значения Pin-Priority имеют следующий смысл:
-
0 - 99: неавтоматические приоритеты. (Они используются только в случае, если
пакет не установлен и нет другой доступной версии пакета.)
-
менее нуля: Версия пакета никогда не выбирается.
Эффект подобный от --target-release может быть получен от
установки файла /etc/apt/apt.conf
следующим образом:
# echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf
Опция --target-release в командой строке и установки в файле
/etc/apt/apt.conf
имеют больший приоритет установок в файле
/etc/apt/preferences
. Будьте внимательны с этим побочным эффектом
при работе с файлом /etc/apt/preferences
.
6.3 Команды выживания в системе Debian
Обладая этими знаниями, Вы можете пребывать в вечном
"обновлении" :-)
6.3.1 Программные ошибки в Debian и поддержка
Если у Вас возникли проблемы с определенным пакетом, исследуйте следующие сайты
перед тем, как обращаться за помощью или оформлять отчет об ошибке. (страницы
одинаково хорошо будут выглядеть в браузерах lynx
,
links
и w3m
):
$ lynx http://bugs.debian.org/
$ lynx http://bugs.debian.org/имя-пакета # если известно имя пакета
$ lynx http://bugs.debian.org/номер-ошибки # если известен номер ошибки
Зайдите на Google (www.google.com) для поиска слов, включив фразу
"site:debian.org".
Если что-то не ясно, изучите замечательное руководство. Установите переменную
окружения CDPATH следующим образом:
export CDPATH=.:/usr/local:/usr/share/doc
и наберите
$ cd ИмяПакета
$ pager README.Debian # если файл существует
$ mc
Большое количество ресурсов по поддержке приведены по адресу Support for Debian, Глава 15.
6.3.2 Разрешение проблем APT upgrade
Проблемы с зависимостями пакетов могут случаться при обновлениях в
unstable/testing, описанных в Обновление системы Debian, раздел
5.3. Чаще всего это случается потому, что обновляемый пакет имеет
зависимости, которые нельзя удовлетворить. Подобные проблемы решаются так:
# apt-get dist-upgrade
Если это не работает, то повторяйте одну из следующих команд до разрешения
проблемы:
# apt-get upgrade -f # продолжение обновления (upgrade) даже после возникновения ошибки
... или
# apt-get dist-upgrade -f # продолжение обновления дистрибутива (dist-upgrade) даже после возникновения ошибки
Некоторые действительно неправильные скрипты могут привести к постоянной
проблеме. Обычно лучше разрешать подобные ситуации, изучив файлы
/var/lib/dpkg/info/packagename.{post,pre}{inst,rm}
скриптов сбойного пакета и затем запустить команду:
# dpkg --configure -a # настраивает все ненастроенные пакеты
Если скрипт жалуется на отсутствие какого-нибудь конфигурационного файла,
поищите его в /etc
. Если он существует, но с расширением
.new (или подобным), измените его имя на имя без этого расширения
(команда mv
).
Проблема зависимостей пакетов может возникать при установке пакета в смесь
unstable/testing. Существует несколько путей обойти
зависимости.
# apt-get install -f package # не принимать во внимание сломанные зависимости
Альтернативный метод исправить эту ситуацию заключается в использовании пакета
equivs
. Смотрите /usr/share/doc/equivs/README.Debian
and The equivs
package, раздел 6.5.2.
6.3.3 Восстановление через dpkg
В крайних случаях восстановление неработоспособной программы
dselect
(APT) на серьезно поврежденной системе может быть
выполнено при помощи программы dpkg
без использования APT:
# cd /var/cache/apt/archives
# dpkg -i libc6* libdb2* perl*
# dpkg -i apt* dpkg* debconf*
# dpkg -i * # до тех пор, пока ошибки не перестанут появляться
Если какого-либо пакета нет, получите его с используя:
# mc # используйте "FTP-соединение", указав Debian FTP-сервер
Стоит заметить, что с недавнего времени сами файлы пакетов на HTTP/FTP-сервере
располагаются в новом каталоге /pool
, а не в классическом месте -
каталоге /dist
. (Смотрите Каталог pool
, раздел 2.1.10.)
Затем устанавливаем пакеты:
# dpkg -i /var/cache/apt/archives/packagefile.deb
Сломанные зависимости или исправляем, или поступаем таким образом:
# dpkg --ignore-depends=пакет1,... -i имя_файла_пакета.deb
# dpkg --force-depends -i имя_файла_пакета.deb
# dpkg --force-depends --purge пакет
# dpkg --force-confmiss -i имя_файла_пакета.deb # Установка отсутствующих conf-файлов
6.3.4 Восстановление информации о выбранных пакетах
Если файл /var/lib/dpkg/status
оказался поврежден по какой-либо
причине, система Debian теряет информацию о выбранных пакетах и попадает в
затруднительное положение. Ищите старую версию файла
/var/lib/dpkg/status
под именем
/var/lib/dpkg/status-old
или
/var/backups/dpkg.status.*
.
Неплохой идей является размещение каталога /var/backups/
на
отдельном разделе жесткого диска, так как он содержит массу важных системных
данных.
Если старый файл /var/lib/dpkg/status
недоступен, Вы все же можете
восстановить потерянную информацию из каталогов из
/usr/share/doc/
:
# ls /usr/share/doc | \
grep -v [A-Z] | \
grep -v '^texmf$' | \
grep -v '^debian$' | \
awk '{print $1 " install"}' | \
dpkg --set-selections
# dselect --expert # reinstall system, de-select as needed
6.3.5 Восстановление системы после сбоя каталога /var
Так как каталог /var
содержит регулярно обновляемые данные, такие
как почта, он подвержен разного рода порче. Выделение его на независимый
раздел жесткого диска ограничивает риск. Если сбой все же произошел, то для
восстановления Вашей Debian системы Вам понадобится восстановить и этот
каталог.
Получите скелет содержимого каталога /var
от минимальной рабочей
системы Debian, основанной на той же или более древней версии Debian, например
такой, var.tar.gz
, и
поместите его в корневой каталог сломанной системы. Далее:
# cd /
# mv var var-old # если все же что-то полезное осталось
# tar xvzf var.tar.gz # используйте скелет от Woody
# aptitude # или dselect
Это должно воссоздать рабочую систему. Вы можете облегчить восстановление
информации о выбранных пакетах, используя прием из раздела Восстановление информации о выбранных пакетах, раздел
6.3.4. ([FIXME]: This procedure needs more experiments to verify.)
6.3.6 Установка пакета в систему, которая не загружается
Загрузите Linux со спасательного диска/дискеты Debian или альтернативного
раздела мультизагрузочной Linux-системы. See Booting the system, раздел 8.1.
Подмонтируйте незагружающуюся систему к каталогу /target
и
используйте у dpkg
chroot-режим установки.
# dpkg --root /target -i имя_пакета.deb
Затем настройте пакеты и исправьте проблемы.
Между прочим, если причиной нормальной загрузки является нарушенный загрузчик
lilo
, Вы можете загрузить систему с использованием стандартного
спасательного диска Debian. На загрузочное приглашение boot: введите
(подразумевается, что корневой раздел Вашей Linux-системы -
/dev/hda12
, что нужно войти на третий уровень исполнения системы):
boot: rescue root=/dev/hda12 3
После этого Вы загружаете практически полностью функционирующую системы на ядре
с гибкого диска. (возможно, при загрузке будут некоторые проблемы с
отсутствием поддержки некоторых возможностей в ядре или каких-либо модулей).
6.3.7 Что делать, если команда dpkg
не работает
Неработоспособность программы dpkg
приводит к невозможности
установки любого .deb файла. Следующая процедура поможет Вам
выйти из подобной ситуации. (в следующей команде можно заменить
"links" на Ваш любимый браузер)
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/
... скачиваем пакет dpkg_версия_архитектура.deb
$ su
password: *****
# ar x dpkg_version_arch.deb
# mv data.tar.gz /data.tar.gz
# cd /
# tar xzfv data.tar.gz
Для архитектуры i386 также можно использовать следующий адрес:
http://packages.debian.org/dpkg.
6.4 Нирвана в командах Debian
Осознавшие смысл этих команд спасутся от вечных мучений ада
обновлений и достигнут нирваны в Debian.
6.4.1 Информация о файле
Чтобы найти пакет, к которому некий файл принадлежит, сделайте:
$ dpkg {-S|--search} образец # найти слово образец в установленных пакетах
$ zgrep -e образец /local/copy/of/debian/woody/Contents-i386.gz
#... найти образец (имя файла) в архиве Debian
Или используйте специально предназначенную для этого команду:
# apt-get install dlocate
# конфликтует с slocate (защищенная версия locate)
$ dlocate имя_файла # более быстрая альтернатива командам dpkg -L и dpkg -S
...
# apt-get install auto-apt # инструментарий для установки пакетов по запросу
# auto-apt update # создать базу данных для auto-apt
$ auto-apt search образец # поиск образца во всех пакета, установленных и нет.
6.4.2 Информация о пакете
Поиск и вывод информации из архива пакетов. Убедитесь, что система APT
настроена на соответствующий архив(файл /etc/apt/sources.list
).
Если Вы хотите увидеть, как пакеты установлены из дистрибутивов
testing/unstable, пользуйтесь командой
apt-cache policy— очень удобно.
# apt-get check # обновить кэш и проверить его на предмет сломанных пакетов
$ apt-cache search образец # поиск пакета по текстовому образцу
$ apt-cache policy образец # информация по пакету priority/dists
$ apt-cache show -a образец # показать описание пакета во всех дистрибутивах
$ apt-cache showsrc образец # показать описание пакетов с исходным текстом
$ apt-cache showpkg образец # отладочная информация по пакету
# dpkg --audit|-C # поиск неполностью установленных пакетов
$ dpkg {-s|--status} пакет ... # описание установленного пакета
$ dpkg -l пакет ... # вывести статус установленного пакета (по одной строчке на пакет)
$ dpkg -L пакет ... # вывести список файлов, установленных пакетом
Команда apt-cache showsrc не заявлена для релиза Woody, но она
работает:)
Вы также можете найти информацию по пакету в следующих файлах (я использую
mc для их просмотра):
/var/lib/apt/lists/*
/var/lib/dpkg/available
Сравнение следующих файлов дает информацию о том, что же произошло в последний
сеанс установки.
/var/lib/dpkg/status
/var/backups/dpkg.status*
6.4.3 Автоматическая установка при помощи APT
Для автоматической установки добавьте следующую строку в файл
/etc/apt/apt.conf
:
Dpkg::Options {"--force-confold";}
Это эквивалентно запуску команды apt-get -q -y
packagename. Так как на все вопросы дается утвердительный
ответ "да", то иногда это может вызвать проблемы, поэтому используйте
эту возможность с осторожностью. Смотрите страницы apt.conf(5)
и
dpkg(1)
.
Позже Вы можете повтороно конфигурировать любой конкретный пакет путем Повторное конфигурирование установленных пакетов, раздел
6.4.4.
6.4.4 Повторное конфигурирование установленных пакетов
Используйте следующие команды для повторного конфигурирования любого уже
установленного пакета.
# dpkg-reconfigure --priority=medium пакет [...]
# dpkg-reconfigure --all # повторно конфигурирвоать все пакеты
# dpkg-reconfigure locales # генерировать дополнительные локали
# dpkg-reconfigure --p=low xserver-xfree86 # повторно настроить X-сервер
Do this for debconf
if you need to change the debconf
dialog mode permanently.
Некоторые программы идут со специальными настроечными скриптами.
apt-setup - создает список /etc/apt/sources.list
install-mbr - устанавливает менеджер главной загрузочной записи
tzconfig - устанавливает временную зону
gpmconfig - настроить демон мыши gpm
sambaconfig - настроить сервер Samba в Potato (Woody использует debconf)
eximconfig - настроить Exim (MTA)
texconfig - настроить TeTeX
apacheconfig - настроить Apache (httpd)
cvsconfig - настроить CVS
sndconfig - настроить звук
...
update-alternatives - set default command, e.g., vim as vi
update-rc.d - System-V init script management
update-menus - Debian menu system
...
6.4.5 Операции remove и purge с пакетами
Удаление пакета с сохранением его конфигурации:
# apt-get remove пакет ...
# dpkg --remove пакет ...
Удаление пакета, включая его конфигурацию:
# apt-get remove --purge пакет ...
# dpkg --purge пакет ...
6.4.6 Удержание старых пакетов
Например, удержание пакетов libc6
и libc6-dev
при
работе с командами dselect
и apt-get -u upgrade
package может быть выполнено так:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
Однако, для команды apt-get -u install пакет этот
"hold" не будет помехой. Для того, чтобы удержать пакет от
обновления путем автоматического отката в командах apt-get -u upgrade
пакет или apt-get -u dist-upgrade, добавьте
следующие строки в файл /etc/apt/preferences
:
Package: libc6
Pin: release a=stable
Pin-Priority: 2000
Здесь элемент "Package:" не может использовать запись
вида "libc6*". Если Вам нужно удержать все бинарные
пакеты, связанные с пакетом с исходными текстами glibc
в
синхронном состоянии, Вам нужно перечислить всех их здесь явным образом.
Следующая команда выведет всех удержанные от обновления пакеты:
dpkg --get-selections "*"|grep -e "hold$"
6.4.7 Система на смеси stable/testing/unstable
Команда apt-show-versions
выводит список версий доступных пакетов
по дистрибутивам.
$ apt-show-versions | fgrep /testing | wc
... как много пакетов мы имеет в testing
$ apt-show-versions -u
... список пакетов, подлежащих обновлению
$ apt-get install `apt-show-versions -u -b | fgrep /unstable`
... обновляет пакеты из unstable на их более новые версии
6.4.8 Удаление файлов кэшированных пакетов
В процессе установки через APT в каталоге /var/cache/apt/archives
кэшируются файлы пакетов, и их можно удалить.
# apt-get autoclean # удаляет только неиспользованные файлы пакетов
# apt-get clean # удаляет все файлы из кэша
6.4.9 Запись/копирование конфигурации системы
Для создания локальной копии списка состояния выбранных пакетов сделайте:
$ dpkg --get-selections "*" >мои_выбранные_пакеты # или используйте \* вместо *
Использование "*" приводит к помещению в файл
мои_выбранные_пакеты записей о пакетах, подлежащие
удалению ("purge").
Вы можете перенести этот файл на другой компьютер и установить по нему системы:
# dselect update
# dpkg --set-selections <мои_выбранные_пакеты
# apt-get -u dselect-upgrade # или dselect install
6.4.10 Портирование пакета в систему на базе stable
Для частичного обновления системы на базе stable необходимо
пересобрать пакет в окружении stable системы, используя
соответствующий пакет с исходным текстом. Это позволит избежать большого
количества обновлений пакетов, от которых устанавливаемый пакет зависит.
Во-первых, добавьте следующие записи в файл to
/etc/apt/sources.list
:
deb-src http://http.us.debian.org/debian testing \
main contrib non-free
deb-src http://http.us.debian.org/debian unstable \
main contrib non-free
Здесь каждая запись deb-src разбита на две строки для удобства
показа, однако в файле sources.list
такое разбиение на строки
недопустимо.
Далее получаем исходный текст и собираем пакет:
$ apt-get update # обновляем кэш списка пакетов
$ apt-get source пакет
$ dpkg-source -x пакет.dsc
$ cd пакет-версия
... изучаем требующиеся пакеты (зависимости Build-depends в .dsc файле) и
устанавливаем их также. Вам также понадобится пакет "fakeroot".
$ dpkg-buildpackage -rfakeroot
...или (без сигнатуры)
$ dpkg-buildpackage -rfakeroot -us -uc # если нужно, позже воспользуйтесь "debsign"
...Затем для установки пакетов выполняем
$ su -c "dpkg -i имя_файла_пакета.deb"
Обычно нужно установить несколько пакетов с суффиком "-dev" для
удовлетворения зависимостей пакета. Программа debsign
находится в
пакете devscripts
. Программа auto-apt
способна
упростить удовлетворение таких зависимостей. Используйте программу
fakeroot
, чтобы не заниматься сборкой пакетов под root.
В Woody эти вопросы с зависимостями могут быть упрощены. Например, дл
компиляции пакета pine
, который поставляется только в виде
исходного текста, выполните:
# apt-get build-dep pine
# apt-get source -b pine
6.4.11 Local package archive
In order to create a local package archive which is compatible with APT and the
dselect
system, Packages
needs to be created and
package files need to be populated in a particular directory tree.
A local deb repository similar to an official Debian archive can
be made in this way:
# apt-get install dpkg-dev
# cd /usr/local
# install -d pool # physical packages are located here
# install -d dists/unstable/main/binary-i386
# ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
# editor override # adjust priority and section
# dpkg-scanpackages pool override /usr/local/ \
> dists/unstable/main/binary-i386/Packages
# cat > dists/unstable/main/Release << EOF
Archive: unstable
Version: 3.0
Component: main
Origin: Local
Label: Local
Architecture: i386
EOF
# echo "deb file:/usr/local unstable main" \
>> /etc/apt/sources.list
Alternatively, a quick-and-dirty local deb repository can be made:
# apt-get install dpkg-dev
# mkdir /usr/local/debian
# mv /some/where/package.deb /usr/local/debian
# dpkg-scanpackages /usr/local/debian /dev/null | \
gzip - > /usr/local/debian/Packages.gz
# echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list
These archives can be remotely accessed by providing access to these
directories through either HTTP or FTP methods and changing entries in
/etc/apt/sources.list
accordingly.
6.4.12 Convert or install an alien binary package
alien
enables the conversion of binary packages provided in Redhat
rpm, Stampede slp, Slackware tgz, and
Solaris pkg file formats into a Debian deb package.
If you want to use a package from another Linux distribution than the one you
have installed on your system, you can use alien
to convert it to
your preferred package format and install it. alien
also supports
LSB packages.
6.4.13 Verify installed package files
debsums
enables verification of installed package files against
MD5 checksums. Some packages do not have available MD5 checksums. A possible
temporary fix for sysadmins:
# cat >>/etc/apt/apt.conf.d/90debsums
DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";};
^D
per Joerg Wendland joergland@debian.org
(untested).
6.4.14 Optimized sources.list
In short, fancy efforts to create an optimized sources.list
did
not produce a significant improvement for me from a location in the USA. I
manually chose a nearby site using apt-setup
.
apt-spy
creates sources.list
automatically, based on
latency and bandwidth. netselect-apt
creates a more complete
sources.list
, but uses an inferior method of choosing the best
mirror (ping time comparison).
# apt-get install apt-spy
# cd /etc/apt ; mv sources.list sources.list.org
# apt-spy -d testing -l sources.apt
6.5 Other Debian peculiarities
6.5.1 The dpkg-divert
command
File diversions are a way of forcing dpkg
not to
install a file into its default location, but to a diverted
location. Diversions can be used through the Debian package
scripts to move a file away when it causes a conflict. System administrators
can also use a diversion to override a package's configuration file, or
whenever some files (which aren't marked as conffiles) need to
be preserved by dpkg
, when installing a newer version of a package
which contains those files (see Сохранение текущей конфигурации, раздел
2.2.4).
# dpkg-divert [--add] filename # add "diversion"
# dpkg-divert --remove filename # remove "diversion"
It's usually a good idea not to use dpkg-divert
unless it is
absolutely necessary.
6.5.2 The equivs
package
If you compile a program from source, it is best to make it into a real local
debianized package (*.deb). Use equivs as a last
resort.
Package: equivs
Priority: extra
Section: admin
Description: Circumventing Debian package dependencies
This is a dummy package which can be used to create Debian
packages, which only contain dependency information.
6.5.3 Alternative commands
To make the command vi
run vim
, use
update-alternatives
:
# update-alternatives --display vi
...
# update-alternatives --config vi
Selection Command
-----------------------------------------------
1 /usr/bin/elvis-tiny
2 /usr/bin/vim
*+ 3 /usr/bin/nvi
Enter to keep the default[*], or type selection number: 2
Items in the Debian alternatives system are kept in
/etc/alternatives
as symlinks.
To set your favorite X Window environment, apply
update-alternatives
to /usr/bin/x-session-manager
and
/usr/bin/x-window-manager
. For details, see Custom X sessions, раздел 9.4.5.1.
/bin/sh
is a direct symlink to /bin/bash
or
/bin/dash
. It's safer to use /bin/bash
to be
compatible with old Bashism-contaminated scripts but better discipline to use
/bin/dash
to enforce POSIX compliance. Upgrading to a 2.4 Linux
kernel tends to set this to /bin/dash
.
6.5.4 System-V init
and runlevels
The default runlevel to boot into can be set in /etc/inittab
.
Unlike other distributions, Debian makes the management of runlevel completely
the sysadmin's responsibility. Management of System-V style init
on Debian is intended to be performed through update-rc.d
scripts.
Starting /etc/init.d/name
in runlevel 1,2,3 and
stopping in 4,5 with sequencing priority number 20 (normal) can be done by:
# update-rc.d name start 20 1 2 3 . stop 20 4 5 .
Removing symbolic links while the script in init.d
still exists
can be done by:
# update-rc.d -f name remove
For editing runlevels, I cheat. I edit entries manually using the
mv
command at the shell prompt of mc
while copying
link entries using Alt-Enter. For example:
# mv S99xdm K99xdm # disable xdm (X display manager)
I even disable a daemon by inserting exit 0 at the start of an
init.d
script as a quick hack. These are conffiles
after all.
6.5.5 Отключение неиспользующихся сервисов
Дистрибутив Debian серъезно относится к вопросам безопасности и ожидает участие
компетентного администратора. Поэтому иногда простота использования переходит
на второй план, и многие сервисы идут с наивысшим уровнем безопасности, а сама
система с минимальным набором работающих сервисов после установки по умолчанию.
Если Вы имеете какие-то сомнения относительно сервисов (Exim, DHCP, ...),
запустите команду ps aux или проверьте содержимое файлов
/etc/init.d/*
и /etc/inetd.conf
. Также проверьте
файл /etc/hosts.deny
подробнее в Restricting logins with PAM, раздел
9.2.1. Очень полезная команда pidof
(смотрите
pidof(8)
).
С недавних пор в Debian система X11 не позволяет удаленные TCP/IP подключения.
Смотрите Using X over TCP/IP, раздел
9.4.6. Проброс трафика системы X Window в тунеле SSH также запрещена.
Смотрите Connecting to a remote X server
– ssh
, раздел 9.4.8.
[ назад ]
[ Содержание ]
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
[ 7 ]
[ 8 ]
[ 9 ]
[ 10 ]
[ 11 ]
[ 12 ]
[ 13 ]
[ 14 ]
[ 15 ]
[ A ]
[ вперед ]