Как установить пакет из testing или unstable в debian

3.1. Введение

Дистрибутив Debian известен своей исключительной стабильностью и надежностью, а также замечательной системой управления пакетами/разрешения зависимостей apt. Установка новых приложений осуществляется очень просто:

# apt-get программа

Выборка и установка библиотек, от которых зависит работа приложения, производятся автоматически. Apt — изощренная, интеллектуальная программа, а официальный архив программного обеспечения Debian поддерживает жесткие стандарты качества пакетов. Официальный программный архив Debian содержит более 12 000 программ; это больше, чем у любой другой платформы.

Dpkg —аналог RPM для Debian, обладающий дополнительными возможностями; он также выполняет базовую настройку конфигурации. Например, при установке Postfix dpkg запрашивает кое-какую информацию о системе, устанавливает стартовые и конфигурационные файлы и инициализирует программу.

Debian существует в трех разных версиях: стабильной, тестовой и нестабильной (также существует четвертая версия для искателей приключений — экспериментальная). Они обозначаются терминами Woody, Sarge и Sid. Версия Woody чрезвычайно консервативна. Пакеты допускаются в версию Woody только после обширной проверки зависимостей и исправления всех дефектов безопасности. Версии Sarge и Sid содержат новые пакеты, не прошедшие столь подробного тестирования. «Заплатки» безопасности быстро выпускаются для Woody и весьма нерегулярно — для Sarge и Sid.

Какую версию использовать? Наиболее очевидный выбор — стабильная версия (Woody), надежная, как скала. Тем не менее за надежность приходится расплачиваться: программы в Woody на месяцы, а иногда и на годы отстают от даты официального выпуска. Woody идеально подходит для серверов. Для настольных систем и рабочих станций более актуальны тестовая версия (Sarge) и нестабильная версия (Sid). И несмотря на устрашающие названия («тестовая», «нестабильная»), они работают вполне нормально.

Кодовые обозначения выглядят симпатично, но не стоит использовать их в конфигурационных файлах. Нестабильной версии всегда будет соответствовать обозначение Sid, но Woody и Sarge не всегда будут связываться со стабильной и тестовой версиями — когда-нибудь текущая тестовая версия Sarge будет повышена до статуса стабильной, а текущая версия Woody уйдет на покой. При грамотном сопровождении система Debian постоянно обновляется без переустановки, поэтому не стоит нарушать ее работу использованием кодовых обозначений, которые со временем изменятся.

Далее перечислены кодовые названия версий. Все они позаимствованы из фильма «История игрушек»:

  • Buzz — Базз Световой Год, космонавт (1.1);
  • Rex — тираннозавр Рекс (1.2);
  • Bo — Бо Пип (1.3.x);
  • Hamm — Хэм, свинья-копилка (2.0);
  • Slink — собака Слинки (2.1);
  • Potato — мистер Картофельная Голова (2.2).

А теперь версии 3.x:

  • Woody — ковбой (стабильная версия);
  • Sarge — командир армии зеленых солдатиков (тестовая версия);
  • Sid — испорченный мальчишка, ломающий игрушки (нестабильная версия).

3.13. Разрешение конфликтов зависимостей в Debian

Проблема

Программа не устанавливается из-за проблем с зависимостями, или команда apt-get dist-upgrade оставляет пакеты, которые нужно удалить.

Решение

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

Допустим, проблемы возникли с пакетом libpam-modules, который не желает обновляться:

# apt-get install libpam-modules
...
The following packages have unmet dependencies:
  libpam-modules: Depends: libdb3 (>=3.2.9-19.1) but 3.2.9-19 is to be installed
E: Broken packages

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

# apt-get install -t stable libpam-modules

Если это не помогает или система не является смешанной, попробуйте воспользоваться системой разрешения конфликтов Debian:

# apt-get -f install

Затем выполните команду:

# dpkg --configure -a

И снова повторите команду:

# apt-get -f install

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

Reading Package Lists... Done
Building Dependency Tree... Done
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Теперь проверьте, что произойдет при удалении существующего пакета libpam-modules:

# apt-get remove --dry-run libpam-modules
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  adduser adminmenu apache at base-config courier-imap courier-imap-ssl courier-pop courier-pop-ssl cron cupsys cupsys-driver-gimpprint dict-elements dict-foldoc dict-gcide dict-jargon dict-vera dict-wn dictd gdm2...
....
WARNING: The following essential packages will be removed
This should NOT be done unless you know exactly what you are doing!
  login libpam-modules (due to login)

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

Если apt-get -u dist-upgrage отображает какие-либо задержанные (held) пакеты, от них лучше избавиться. Пакеты удерживаются из-за конфликтов зависимостей, которые не удается разрешить apt. Попробуйте воспользоваться следующей командой для поиска и исправления конфликтов:

# apt-get -o Debug::pkgProblemResolver=yes dist-upgrade

Если исправить конфликты не удается, команда завершается с сообщением

0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

Удаляйте held-пакеты один за одним, каждый раз запуская dist-upgrade, пока не останется ни одного задержанного пакета. Затем установите заново все необходимые пакеты. Не забудьте использовать ключ —dry-run, чтобы заранее знать обо всех последствиях:

# apt-get remove --dry-run libsdl-perl

Комментарий

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

3.4. Установка пакетов в системе на базе Debian

Проблема

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

Решение

Воспользуйтесь командой apt-get install:

# apt-get install tuxkart

Установка пакета с перезаписью файлов:

# apt-get install --reinstall tuxkart

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

# apt-get install tuxkart gltron frozen-bubble
tuxracer nethack galaga

Загрузка программ без установки или распаковки:

# apt-get -d install tuxkart

Чтобы протестировать команду перед выполнением, присоедините к строке ключ —dry-run:

# apt-get install tuxkart gltron frozen-bubble tuxracer nethack galaga --dry-run

Комментарий

Для определения имен пакетов используйте страницу поиска Debian по адресу http://www.debian.org/distrib/packages/. Имена пакетов Debian часто отличаются от своих аналогов из RPM. Например, программа CyrusSASL оформляется в пакет sasl-2.x.rpm, а в Debian она разбивается на несколько пакетов с именами libsasl-*.

Не забудьте выполнить команду apt-get update после изменения /etc/apt/sources.list и периодически запускайте ее, чтобы получать обновленную информацию из архивов пакетов.

apt-get загружает и устанавливает (а при необходимости и удаляет) все пакеты, необходимые для разрешения всех зависимостей.

3.7. Обновление пакетов в Debian

Проблема

Требуется обновить пакет в системе Debian, потому что новая версия обладает расширенными возможностями или в ней исправлены ошибки.

Решение

Воспользуйтесь командой apt-get install:

# apt-get install gltron
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be upgraded:
  gltron
1 upgraded, 0 newly installed, 0 to remove and 78 not upgraded.
Need to get 89.5kB of archives.
After unpacking 266kB of additional disk space will be used.
Get:1 ftp://ftp.debian.org sid/main gltron 3.53 
Fetched 89.5kB in 5s (16.8kB/s)
Preconfiguring packages...
(Reading database... 141286 files and directories currently installed.)
Preparing to replace adduser 3.52 (using .../archives/adduser_3.53_all.deb)...
Unpacking replacement gltron...
Setting up adduser (3.53)...
#

Обновление нескольких пакетов:

# apt-get install tuxkart gltron frozen-bubble tuxracer nethack galaga

Комментарий

Команды обновления отдельных пакетов не существует. Команда apt-get install всегда устанавливает последнюю версию пакета.

3.11. Поиск программ, установленных в системе Debian

Проблема

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

Решение

Воспользуйтесь средствами обработки запросов dpkg.

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

$ dpkg -l | tee dpkglist

Поиск всех пакетов, удовлетворяющих критерию поиска, и вывод информации об их состоянии:

$ dpkg -l '*gnome*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name             Version          Description
+++-==============================================================
pn  gnome   <none>    (no description available)
un  gnome-about   <none>       (no description available)
ii  gnome-applets   2.4.2-1    Various applets for GNOME 2 panel
rc  gnome-bin     1.4.2-18       Miscellaneous binaries used by GNOME

Поиск установленных пакетов, удовлетворяющих критерию поиска:

$ dpkg -l | grep gnome

Вывод списка файлов, входящих в пакет:

$ dpkg -L gnome-applets
.
/usr/share
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/gnome-applets
...

Следующая команда определяет, к какому пакету относится файл:

$ dpkg -S boing.wav
tuxkart-data: /usr/share/games/tuxkart/wavs/boing.wav

Вывод полной информации о пакете:

$ dpkg -s kpoker
Package:  kpoker
Status: install ok installed
Priority: optional
Section: games
Installed-Size: 428
Maintainer: Daniel Schepler <[email protected]>
Source: kdegames
Version: 4:3.1.5-1
....

Комментарий

Таблица, выводимая командой dpkg -l, выглядит довольно загадочно, поэтому я приведу расшифровку.

$ dpkg -l gnome*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name             Version          Description
+++-==============================================================
pn  gnome   <none>    (no description available)
un  gnome-about   <none>       (no description available)
ii  gnome-applets   2.4.2-1    Various applets for GNOME 2 panel
rc  gnome-bin     1.4.2-18       Miscellaneous binaries used by GNOME

В строке pn gnome поднимитесь от буквы p наверх по «стрелке». Она приведет вас к строке Desired=Unknown/Install/Remove/Purge/Hold с расшифровками первого символа (Purge в данном случае).

От следующего столбца, n, стрелка ведет к строке Status. По ней можно определить, что символ n означает Not/Installed.

В третьем столбце отображается код ошибки. В нашем случае он пуст (и хорошо). Как указано в конце строки, любые символы верхнего регистра в столбцах Status и Err ни к чему хорошему не приведут.

Получаем: пакет gnome когда-то был установлен в системе, но потом он был удален.

Код un означает, что пакет никогда не устанавливался.

Код ii означает, что пакет установлен.

Код rc означает, что пакет был установлен, а затем удален, но после него остались конфигурационные файлы. Состав этих файлов определяется легко:

$ dpkg -L gnome-bin
/etc/logcheck/ignore.d.server/gnome-bin
/etc/logcheck/ignore.d.workstation/gnome-bin

3.10. Создание смешанной системы Debian

Проблема

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

Решение

Отредактируйте файл /etc/apt/sources.list так, чтобы в нем содержались ссылки на источники как для стабильной, так и тестовой версий (за информацией о файле sources.list обращайтесь к разделу 3.2. Затем отредактируйте /etc/apt/apt.conf и задайте версию по умолчанию (в нашем примере это стабильная версия). Затем при установке или обновлении пакетов нужная версия выбирается при помощи флага -t.

Отредактированный (или созданный) файл /etc/apt/apt.conf должен выглядеть примерно так:

// Версия системы по умолчанию.
// Допустимые значения: woody, sarge, sid
// (или stable, testing, unstable)
APT::Default-Release "stable";

Далее производится обновление списков пакетов:

# apt-get update

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

# apt-get install tuxkart

Для установки пакета из тестовой версии (Sarge) воспользуйтесь ключом -t:

# apt-get -t testing install tuxkart

Чтобы гарантированно получить конкретную версию, укажите номер пакета:

# apt-get install tuxkart=0.2.0-3

Комментарий

Сопровождение смешанной системы требует осторожности, особенно если в качестве базовой версии используется Woody. По мере «старения» Woody могут возникнуть проблемы двоичной совместимости с Sarge/Sid

Различия между ключевыми системными файлами (такими как libc и gcc) могут стать настолько серьезными, что пакеты Sarge/Sid не будут устанавливаться в Woody. Если это произойдет, попробуйте построить пакеты по исходным текстам (см. раздел 3.6).

3.14. Создание локального архива Debian

Проблема

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

Решение

Воспользуйтесь программой apt-proxy:

# apt-get proxy

Apt-proxy запускается автоматически после установки.

Теперь отредактируйте секцию add_backend/debian/ файла /etc/apt-proxy/apt-proxy.conf так, чтобы она содержала ссылки на географически близкие зеркала (список зеркал с пакетами находится по адресу http://www.debian.org/mirror/list).

Затем отредактируйте файл /etc/apt/sources.list на клиентских компьютерах так, чтобы он содержал ссылку на сервер apt-proxy. По умолчанию используется порт 9999:

deb http://ip-or-hostname:9999/main stable main contrib non-free
deb http://ip-or-hostname:9999/non-US stable/non-US main contrib non-free
deb http://ip-or-hostname:9999/security stable/updates main contrib non-free

Запустите apt-get update на клиентских машинах, и локальный архив начнет работать. Каждый раз, когда клиентский компьютер в локальной сети устанавливает программу, эта программа будет кэшироваться на сервере apt-proxy. Последующие запросы того же пакета будут обслуживаться из локального кэша.

Комментарий

Большинству параметров в файле /etc/apt-proxy/apt-proxy.conf, кроме источников пакетов, можно оставить значения по умолчанию. Исключение составляет частота «обновлений», определяющая периодичность загрузки списка пакетов. По умолчанию соответствующая секция выглядит так:

# Максимальная частота обновлений (в минутах)
# Высокие значения снижают нагрузку.
BACKEND_FREQ=240

Я обычно устанавливаю значение этого параметра равным 1440; ежедневной проверки вполне достаточно. Действительно важные события происходят не так часто. Проверку следует производить хотя бы раз в день главным образом для своевременной установки обновлений безопасности.

См. также

apt-proxy(8), apt-proxy.conf(5); официальный список зеркал Debian (http://www.debian.org/mirror/); домашняя страница apt-proxy (http://apt-proxy.sourceforge.net/).

3.6. Установка программ в Debian по исходным текстам

Проблема

Требуется откомпилировать программу в системе (вместо установки двоичных файлов Debian). Возможно, вы хотите отредактировать код программы или запустить пакет из тестовой или нестабильной версии в стабильной (перекомпиляция обеспечивает построение правильных зависимостей).

Решение

Воспользуйтесь командой apt-get source и содействием dpkg.

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

# cd /usr/src
# apt-get build-dep tuxkart

Загрузка и сборка пакета:

# apt-get -b source tuxkart

Установка пакета:

# dpkg -i tuxkart.deb

Комментарий

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

Если потребуется установить программу, отсутствующую в архивах Debian, постройте .deb при помощи CheckInstall — утилиты, создающей пакеты RPM, .deb и Slackware (см. раздел 4.5).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: