Книга администратора Debian



Pdf просмотр
страница8/32
Дата13.11.2016
Размер7.63 Mb.
Просмотров5156
Скачиваний0
ТипРеферат
1   ...   4   5   6   7   8   9   10   11   ...   32

Homepage: http://zim-wiki.org
Standards-Version: 3.9.6
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/zim.git
Vcs-Git: git://anonscm.debian.org/collab-maint/zim.git
Build-Depends: debhelper (>= 9), xdg-utils, python (>= 2.6.6-3
), libgtk2.0-0 (>= 2.6), python-gtk2, python-xdg
Package-List:
zim deb x11 optional arch=all
Checksums-Sha1:
ad8de170826682323c10195b65b9f1243fd75637 1772246 zim_0.62.orig.tar.gz a4f70d6f7fb404022c9cc4870a4e62ea3ca08388 14768 zim_0.62-3.debian.tar.xz
Checksums-Sha256:
19d62aebd2c1a92d84d80720c6c1dcdb779c39a2120468fed01b7f252511bdc2 1772246 zim_0.62.orig.tar.gz fc2e827e83897d5e33f152f124802c46c3c01c5158b75a8275a27833f1f6f1de 14768 zim_0.62-3.debian.tar.xz
Files:
43419efba07f7086168442e3d698287a 1772246 zim_0.62.orig.tar.gz
725a69663a6c2961f07673ae541298e4 14768 zim_0.62-3.debian.tar.xz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Signed by Raphael Hertzog
iQEcBAEBCAAGBQJUR2jqAAoJEAOIHavrwpq5WFcH/RsdzCHc1oXXxHitU23hEqMj
T6ok29M1UFDJDowMXW75jQ1nT4WPUtvEGygkCHeoO/PvjEvB0sjU8GQlX+N9ddSB
aHfqfAYmVhADNGxrXQT5inZXUa8qGeeq2Sqf6YcWtsnuD56lDbvxkyf/XYopoIEl oltfl05z/AI+vYsW482YrCz0fxNAKAvkyuPhDebYI8jnKWeAANoqmKpsNc/HYyvT
+ZiA5o57OiGdOKT6XGy3/FiF3dkHiRY8lXW7xdr1BbIgulwl9UmiUNwuxwOYbQO7
edtjiTJqOaFUA0x1zB/XGv5tHr1MjP8naT+kfVoVHTOox51CDbeu5D3DZY4imcY=
=Wtoa
-----END PGP SIGNATURE-----
Обратите внимание, что исходный пакет тоже имеет зависимости (
Build-Depends
),
кардинально отличающиеся от зависимостей для двоичных пакетов, поскольку они включают в себя инструменты, необходимые для компиляции программного обеспечения и сборки двоичного пакета.
ВНИМАНИЕ Разные пространства имён
Важно отметить, что имена исходного пакета и создаваемого из него двоичного пакета не обязательно должны совпадать. Это нетрудно понять, если вы знаете, что из каждого исходного пакета может быть создано несколько двоичных пакетов. Вот почему в файле
.dsc есть поля
Source и
Binary
, где явно указываются имя исходного пакета и список создаваемых из него двоичных пакетов.
КУЛЬТУРА Зачем разделять на несколько пакетов
Довольно часто из исходного пакета (того или иного программного обеспечения) может создаваться несколько двоичных пакетов. Смысл разделения заключается в возможности использовать части программного обеспечения в различных контекстах. В случае динамической библиотеки целью установки может быть обеспечение работы того или иного приложения (например libc6) или разработка новой программы (тогда понадобится libc6-dev). Та же логика используется и для клиент-серверных приложений, для которых может возникнуть желание установить серверную часть на одной машине, а клиентскую на нескольких других (типичным примером являются openssh-server и openssh- client).
Довольно часто документация предоставляется в отдельном пакете: пользователь может установить её независимо от программного обеспечения, и может в любое время удалить её для экономии места на диске. Кроме того, это также помогает сэкономить дисковое пространство на зеркалах Debian, так как пакет с документацией будет общим для всех архитектур (вместо того, чтобы дублировать документацию в пакетах для каждой архитектуры).
ПЕРСПЕКТИВА Различные форматы исходных пакетов
Первоначально был только один формат исходных пакетов. Это формат
1.0
, который связывает архив
.orig.tar.gz с «дебианизирующей» заплатой
.diff.gz
(есть также вариант, включающий единственный архив
.tar.gz
, который используется автоматически, если
.orig.tar.gz отсутствует).
Начиная с Debian Squeeze разработчики Debian имеют возможность использовать новые форматы, в которых исправленны многие проблемы старого формата. Формат
3.0 (quilt)
позволяет объединить несколько архивов в одном исходном пакете: в дополнение к обычному
.orig.tar.gz могут быть включены дополнительные архивы
.orig-имя-компонента.tar.gz
. Это полезно в случаях, когда программное обеспечение распределено на несколько компонентов, но для них хочется иметь один исходный пакет. Эти архивы можно сжимать при помощи bzip2 или xz, а не только gzip, что позволяет экономить дисковое пространство и сетевой трафик. Наконец, вместо монолитного
.diff.gz используется архив
.debian.tar.gz
, содержащий инструкции для сборки и набор заплат, предоставляемых сопровождающим пакета. Последние записаны в формате, совместимом с quilt — инструментом, облегчающим работу с серией заплат.
Файл
.orig.tar.gz
— это архив, содержащий исходный код в том виде, в каком он предоставляется оригинальным разработчиком. Сопровождающим пакетов Debian не
рекомендовано изменять этот архив, чтобы иметь возможность легко проверить подлинность и целостность файла (путём простого сравнения контрольной суммы), а также в угоду пожеланиям некоторых авторов.
Архив
.debian.tar.gz содержит все изменения, произведённые сопровождающим пакета, в частности добавление каталога debian
, содержащего инструкции для выполнения сборки пакета Debian.
ИНСТРУМЕНТ Распаковка пакетов c исходным кодом
При наличии исходного пакета его можно распаковать с помощью dpkg-source (из пакета dpkg-dev):
$
dpkg-source -x package_0.7-1.dsc
Также можно использовать apt-get для загрузки пакета с исходными кодами и его последующей распаковки. Для этого необходимо, чтобы файл
/etc/apt/sources.list содержал соответствующие строки deb-src с адресами репозиториев (подробнее см. в
Раздел 6.1, «Filling in the sources.list
File»
). Они используются для указания
«источников» пакетов, содержащих исходные коды (подразумеваются серверы, на которых размещена группа исходных пакетов).
$
apt-get source пакет
5.3.2. Использование в Debian
Пакеты с исходными кодами являются основой всего в системе Debian. При помощи них собраны все остальные пакеты Debian, и любое изменение в двоичных пакетах —
следствие изменений, внесенных в исходный пакет. Сопровождающие Debian работают только с исходными пакетами, однако знают, какими окажутся последствия их действий для двоичных пакетов. Так что плоды их трудов находятся в исходных пакетах: к ним можно легко вернуться, и они есть начало всего.
При появлении новой версии пакета (исходного пакета и одного или нескольких двоичных пакетов) на сервере Debian наиболее важным является исходный пакет. Ведь именно он будет использоваться сетью машин с разными архитектурами для компиляции под различные архитектуры, поддерживаемые Debian. Тот факт, что разработчик заодно посылает один или несколько двоичных пакетов для той или иной архитектуры (как правило, это i386 или amd64) не имеет столь большого значения,
поскольку они и так могли бы быть сгенерированы автоматически.

5.4. Работа с пакетами при помощи dpkg
dpkg представляет собой основную программу в системе для работы с пакетами Debian.
При наличии пакетов
.deb именно dpkg позволяет их установить или проанализировать их содержимое. Однако эта программа имеет только частичное представление о мире
Debian: она знает, что установлено в системе, а также всё, что передано ей в командной строке, но она ничего не знает о других доступных пакетах. Поэтому она завершится с ошибкой, если обнаружит неудовлетворённую зависимость. Такие инструменты как apt,
напротив, автоматически создадут список зависимостей, чтобы установить всё по возможности автоматически.
ЗАМЕТКА dpkg или apt?
dpkg стоит рассматривать как низкоуровневый инструмент (движок), а apt — как инструмент, более близкий к пользователю, обходящий ограничения первого. Эти инструменты работают совместно, каждый со своей спецификой,
заточенный под определённый круг задач.
5.4.1. Установка пакетов
dpkg — это, прежде всего, инструмент для установки уже доступных пакетов Debian
(поскольку он ничего не загружает). Чтобы установить пакет, используется опция
-i или
--install
Пример 5.2. Установка пакета при помощи dpkg
#
dpkg -i man-db_2.6.2-1_amd64.deb
(Чтение базы данных … на данный момент установлено 96357 файлов и каталогов.)
Подготовка к замене пакета man-db 2.6.1-3 (используется файл man-db_2.6.2-1_amd64.deb) …
Распаковывается замена для пакета man-db …
Настраивается пакет man-db (2.6.2-1) …
Building database of manual pages ...
Мы можем видеть каждый этап, выполняемый dpkg, поэтому мы знаем, в каком месте могла произойти какая-либо ошибка. Установку также можно выполнить в два этапа:
сперва распаковка, затем конфигурация. Благодаря этому apt-get делает меньше обращений к dpkg (каждый такой запрос является дорогостоящей операцией из-за необходимости загрузки в память базы данных, включая весь список уже установленных файлов).
Пример 5.3. Раздельная распаковка и настройка
#
dpkg --unpack man-db_2.6.2-1_amd64.deb
(Чтение базы данных … на данный момент установлено 96357 файлов и каталогов.)
Подготовка к замене пакета man-db 2.6.2-1 (используется файл man-db_2.6.2-1_amd64.deb) …

Распаковывается замена для пакета man-db …
#
dpkg --configure man-db
Настраивается пакет man-db (2.6.2-1) …
Building database of manual pages ...
Иногда dpkg по той или иной причине не может установить пакет и возвращает ошибку;
если пользователь даёт указание проигнорировать эту ошибку, будет выдано лишь предупреждение; для этого существуют различные опции
--force-*
. Команда dpkg --
force-help, или документация этой команды, выдаст полный список таких опций. Самой частой ошибкой, с которой вам придётся рано или поздно столкнуться, является конфликт файлов. Когда пакет содержит файл, который уже установлен другим пакетом,
dpkg откажется устанавливать его, и мы получим такое сообщение:
Распаковывается пакет libgdm (из файла .../libgdm_3.8.3-2_amd64.deb) …
dpkg: ошибка при обработке параметра /var/cache/apt/archives/libgdm_3.8.3-2_amd64.deb (--unpack):
попытка перезаписать «/usr/bin/gdmflexiserver», который уже имеется в пакете gdm3 3.4.1-9
В этом случае, если вы считаете, что замена этого файла не представляет существенной опасности для стабильности вашей системы (зачастую это именно так), вы можете использовать опцию
--force-overwrite
, которая сообщит dpkg о необходимости проигнорировать эту ошибку и перезаписать файл.
Хотя есть много опций
--force-*
, только
--force-overwrite рекомендуется для регулярного использования. Остальные предназначены только для исключительных случаев, и лучше не трогать их, пока это возможно, чтобы соблюдать правила,
заложенные при создании пакета. Не забывайте, что эти правила являются гарантией целостности и стабильности системы.
ВНИМАНИЕ Эффективное использование
--force-*
Если вы не будете осторожны, использование опции
--force-*
может привести к тому, что команды APT перестанут работать. Некоторые из этих опций позволяют установить пакет с неудовлетворёнными зависимостями или при наличии конфликта. В результате согласованность системы с точки зрения зависимостей нарушается, и команды
APT откажутся выполнять какие-либо действия кроме тех, которые вернут систему в согласованное состояние (это обычно сводится к установке отсутствующей зависимости или удалению проблемного пакета). Вот пример сообщения, сигнализирующего о такой ошибке, которое получено после установки новой версии rdesktop с игнорированием зависимости от более новой версии libc6:
#
apt full-upgrade
[...]
Возможно, для исправления этих ошибок вы захотите воспользоваться «apt-get -f install».
Пакеты, имеющие неудовлетворённые зависимости:
rdesktop: Зависит от: libc6 (>= 2.5) но 2.3.6.ds1-13etch7 уже установлен
E: Неудовлетворённые зависимости. Попытайтесь использовать -f.
Бесстрашные администраторы, уверенные в правильности своего анализа ситуации, могут проигнорировать предупреждение о проблеме зависимостями или конфликте, используя соответствующую опцию
--force-*
. В этом случае, если необходимо продолжать использовать apt или aptitude, нужно отредактировать
/var/lib/dpkg/status и
удалить/изменить зависимость или конфликт.
Редакрирование данного файла — это грязный хак, и не стоит прибегать к нему, кроме как в самых крайних случаях.
Зачастую лучшим решением является пересборка пакета, вызывающего проблему (см.
Раздел 15.1, «Пересборка пакета из его исходного кода»
) или использование его новой версии (вероятно исправленной) из такого репозитория как stable-backports
(см.
Раздел 6.1.2.4, «Stable Backports»
).

5.4.2. Удаление пакета
Запуск dpkg с опцией
-r или
--remove
, за которой следует имя пакета, приведет к удалению этого пакета. Это удаление, однако, не полное: все конфигурационные файлы,
сценарии сопровождающего, файлы журналов (системные журналы) и другие пользовательские данные, используемые этим пакетом, останутся. Таким путём легко избавиться от программы, деинсталлировав её, но при этом сохраняется возможность установить её ещё раз с той же конфигурацией. Для полного удаления всего, связанного с пакетом, используется опция
-P
или
--purge
, сопровождающаяся именем пакета.
Пример 5.4. Полное удаление пакета debian-cd
#
dpkg -r debian-cd
(Чтение базы данных … на данный момент установлено 97747 файлов и каталогов.)
Удаляется пакет debian-cd (3.1.17) …
#
dpkg -P debian-cd
(Чтение базы данных … на данный момент установлен 97401 файл и каталог.)
Удаляется пакет debian-cd (3.1.17) …
Вычищаются файлы настройки пакета debian-cd (3.1.17) …
5.4.3. Запросы к базе данных dpkg и анализ файлов
.deb
К ОСНОВАМ Синтаксис опций команд
Для большинста опций существуют «длинные» (одно или несколько слов, перед которыми ставится двойной дефис) и
«короткие» варианты (одна буква, часто первая буква «длинного» варианта, после одного дефиса). Это соглашение так распространено, что уже является стандартом POSIX.
Прежде чем завершить этот раздел, рассмотрим опции dpkg для запросов к внутренней базе данных для получения различной информации. При этом сперва будут указываться длинные, а затем соответствующие короткие опции (которые, разумеется, принимают те же самые аргументы). Так,
--listfiles пакет
(или
-L
) выводит список файлов,
установленых пакетом;
--search файл
(или
-S
) ищет пакет, к которому относится этот файл;
--status пакет
(or
-s
) выводит информацию о том или ином установленном пакете;
--list
(или
-l
) показывает список пакетов, известных системе, и их статус;
-- contents file.deb
(или
-c
) показывает список файлов в этом пакете;
--info file.deb
(или
-I
) показывает информацию о пакете Debian.
Пример 5.5. Получение информации с помощью dpkg
$
dpkg -L base-passwd
/.
/usr
/usr/sbin
/usr/sbin/update-passwd
/usr/share
/usr/share/man
/usr/share/man/ru

/usr/share/man/ru/man8
/usr/share/man/ru/man8/update-passwd.8.gz
/usr/share/man/pl
/usr/share/man/pl/man8
/usr/share/man/pl/man8/update-passwd.8.gz
/usr/share/man/man8
/usr/share/man/man8/update-passwd.8.gz
/usr/share/man/fr
/usr/share/man/fr/man8
/usr/share/man/fr/man8/update-passwd.8.gz
/usr/share/doc-base
/usr/share/doc-base/users-and-groups
/usr/share/base-passwd
/usr/share/base-passwd/passwd.master
/usr/share/base-passwd/group.master
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/base-passwd
/usr/share/doc
/usr/share/doc/base-passwd
/usr/share/doc/base-passwd/copyright
/usr/share/doc/base-passwd/users-and-groups.html
/usr/share/doc/base-passwd/changelog.gz
/usr/share/doc/base-passwd/users-and-groups.txt.gz
/usr/share/doc/base-passwd/README
$
dpkg -S /bin/date
coreutils: /bin/date
$
dpkg -s coreutils
Package: coreutils
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 13822
Maintainer: Michael Stone
Architecture: amd64
Multi-Arch: foreign
Version: 8.13-3.5
Replaces: mktemp, timeout
Depends: dpkg (>= 1.15.4) | install-info
Pre-Depends: libacl1 (>= 2.2.51-8), libattr1 (>= 1:2.4.46-8), libc6 (>= 2.7), libselinux1 (>= 1.32)
Conflicts: timeout
Description: GNU core utilities
This package contains the basic file, shell and text manipulation utilities which are expected to exist on every operating system.
Specifically, this package includes:
arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir dircolors dirname du echo env expand expr factor false flock fmt fold groups head hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test timeout touch tr true truncate tsort tty uname unexpand uniq unlink users vdir wc who whoami yes

Homepage: http://gnu.org/software/coreutils
$
dpkg -l 'b*'
Желаемый=неизвестно[u]/установить[i]/удалить[r]/вычистить[p]/зафиксировать[h]
| Состояние=не[n]/установлен[i]/настроен[c]/распакован[U]/частично настроен[F]/
частично установлен[H]/trig-aWait/Trig-pend
|/ Ошибка?=(нет)/требуется переустановка[R] (верхний регистр в полях состояния и ошибки указывает на ненормальную ситуацию)
||/ Имя Версия Архитектура Описание
+++-============-==============-==============-================================
un backupninja <нет> (описание недоступно)
un base <нет> (описание недоступно)
un base-config <нет> (описание недоступно)
ii base-files 7.1 amd64 Debian base system miscellaneous ii base-passwd 3.5.26 amd64 Debian base system master passwo
[...]
$
dpkg -c /var/cache/apt/archives/gnupg_1.4.12-7_amd64.deb
drwxr-xr-x root/root 0 2013-01-02 19:28 ./
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/share/
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/share/doc/
drwxr-xr-x root/root 0 2013-01-02 19:28 ./usr/share/doc/gnupg/
-rw-r--r-- root/root 3258 2012-01-20 10:51 ./usr/share/doc/gnupg/TODO
-rw-r--r-- root/root 308 2011-12-02 18:34 ./usr/share/doc/gnupg/FAQ
-rw-r--r-- root/root 3543 2012-02-20 18:41 ./usr/share/doc/gnupg/Upgrading_From_PGP.txt
-rw-r--r-- root/root 690 2012-02-20 18:41 ./usr/share/doc/gnupg/README.Debian
-rw-r--r-- root/root 1418 2012-02-20 18:41 ./usr/share/doc/gnupg/TODO.Debian
[...]
$
dpkg -I /var/cache/apt/archives/gnupg_1.4.12-7_amd64.deb
новый пакет debian, версия 2.0.
размер 1952176 байт(а): управляющий архив длиной 3312 байт(а).
1449 байт(а), 30 строк control
4521 байт(а), 65 строк md5sums
479 байт(а), 13 строк * postinst #!/bin/sh
473 байт(а), 13 строк * preinst #!/bin/sh
Package: gnupg
Version: 1.4.12-7
Architecture: amd64
Maintainer: Debian GnuPG-Maintainers
Installed-Size: 4627
Depends: libbz2-1.0, libc6 (>= 2.4), libreadline6 (>= 6.0), libusb-0.1-4 (>= 2:0.1.12), zlib1g (>= 1:1.1.4), dpkg (>= 1.15.4) | install-info, gpgv
Recommends: libldap-2.4-2 (>= 2.4.7), gnupg-curl
Suggests: gnupg-doc, xloadimage | imagemagick | eog, libpcsclite1
Section: utils
Priority: important
Multi-Arch: foreign
Homepage: http://www.gnupg.org
Description: GNU privacy guard - a free PGP replacement
GnuPG is GNU's tool for secure communication and data storage.
It can be used to encrypt data and to create digital signatures.
It includes an advanced key management facility and is compliant with the proposed OpenPGP Internet standard as described in RFC 4880.
[...]
УГЛУБЛЯЕМСЯ Сравнение версий

Так как dpkg является программой для работы с пакетами Debian, она, помимо всего прочего, содержит эталонную реализацию логики сравнения номеров версий. Поэтому у неё есть опция
--compare-versions
, используемая внешними программами (главным образом — сценариями настройки, запускаемыми самой dpkg). Для этой опции требуются три параметра: номер версии, оператор сравнения и второй номер версии. Допустимые операторы сравнения — lt
(строго меньше), le
(меньше или равна), eq
(равна), ne
(не равна), ge
(больше или равна), и gt
(строго больше). Если сравнение верно, dpkg возвращает 0 (успех), если нет, то ненулевое значение (признак ошибки).
$
dpkg --compare-versions 1.2-3 gt 1.1-4
$
echo $?
0
$
dpkg --compare-versions 1.2-3 lt 1.1-4
$
echo $?
1
$
dpkg --compare-versions 2.6.0pre3-1 lt 2.6.0-1
$
echo $?
1
Обратите внимание на неожиданный сбой последнего сравнения: для dpkg буквы pre
, обозначающие, как правило,
предварительный выпуск, не имеет никакого особого значения, и буквенные символы сравниваются таким же образом, как и числа (a < b < c ...), в алфавитном порядке. Именно поэтому dpkg считает, что «
0pre3
» больше, чем
«
0
». При необходимости указать в номере версии, что она относится к предварительному выпуску, используется символ тильды «
»:
$
dpkg --compare-versions 2.6.0
pre3-1 lt 2.6.0-1

$
echo $?
0
5.4.4. Файл журнала dpkg
dpkg сохраняет журнал всех своих действий в
/var/log/dpkg.log
. Этот журнал чрезвычайно подробный: в нём задокументированы все этапы обработки пакетов dpkg.
Этот журнал помогает не только отследить поведение dpkg, но и сохранить историю изменений в системе: можно найти точный момент, когда каждый пакет был установлен или обновлён, и эта информация может быть чрезвычайно полезной при выяснении причин изменения поведения системы в целом. Кроме того, ведётся запись информации обо всех версиях, и её легко сверить с changelog.Debian.gz из соответствующего пакета или с отчётами об ошибках онлайн.
5.4.5. Поддержка мультиархитектуры
Все пакеты Debian имеют поле
Architecture в своих метаданных. Это поле может содержать либо значение «
all
» (для пакетов, которые не зависят от архитектуры), либо название конкретной архитектуры, для которой пакет предназначен (например «amd64»,
«armhf», …). В последнем случае dpkg по умолчанию допустит установку пакета только в том случае, если его архитектура соответствует архитектуре системы, возвращаемой
dpkg --print-architecture.
Это ограничение гарантирует, что в системе не окажется двоичных файлов,
скомпилированных для неправильной архитектуры. Всё было бы прекрасно, но на
(некоторых) компьютерах можно запускать двоичные файлы для разных архитектур,
нативно (к примеру, на системах «amd64» работают двоичные файлы для «i386») или через эмуляторы.
5.4.5.1. Включение мультиархитектуры
Поддержка мультиархитектуры dpkg позволяет определять «чужеродные архитектуры»,
которые могут быть установлены в данной системе. Это легко сделать с помощью dpkg -
-add-architecture, как показано в примере ниже. Существует и соответствующая команда
dpkg --remove-architecture для отключения поддержки чужеродной архитектуры, но её
можно использовать только в том случае, когда в системе не осталось ни одного пакета этой архитектуры.
#
dpkg --print-architecture
amd64
#
dpkg --print-foreign-architectures
#
dpkg -i gcc-4.7-base_4.7.2-5_armhf.deb
dpkg: ошибка при обработке параметра gcc-4.7-base_4.7.2-5_armhf.deb (--install):
архитектура пакета (armhf) не соответствует архитектуре системы (amd64)
При обработке следующих пакетов произошли ошибки:
gcc-4.7-base_4.7.2-5_armhf.deb
#
dpkg --add-architecture armhf
#
dpkg --add-architecture armel
#
dpkg --print-foreign-architectures
armhf armel
#
dpkg -i gcc-4.7-base_4.7.2-5_armhf.deb
Выбор ранее не выбранного пакета gcc-4.7-base:armhf.
(Чтение базы данных … на данный момент установлено 97399 файлов и каталогов.)
Распаковывается пакет gcc-4.7-base:armhf (из файла gcc-4.7-base_4.7.2-5_armhf.deb) ...
Настраивается пакет gcc-4.7-base:armhf (4.7.2-5) …
#
dpkg --remove-architecture armhf
dpkg: ошибка: невозможно удалить архитектуру «armhf», которая в данный момент используется в базе данных
#
dpkg --remove-architecture armel
#
dpkg --print-foreign-architectures
armhf
ЗАМЕТКА Поддержка мультиархитектуры в APT
APT автоматически определит, если dpkg будет настроен на поддержку чужеродных архитектур, и начнёт загрузку соответствующих файлов
Packages в процессе обновления.
Чужеродные пакеты можно установить при помощи команды apt install
пакет
:
архитектура
НА ПРАКТИКЕ Использование собственнических двоичных файлов i386 в системах amd64
Есть несколько случаев, когда может пригодиться мультиархитектура, но самым распространённымным из них является обеспечение возможности запуска 32-битных файллов (i386) на 64-битных системах (amd64), в частности потому что некоторые популярные собственнические приложения (вроде Skype) доступны только в виде 32- разрядных версий.

5.4.5.2. Изменения, связанные с мультиархитектурой
Чтобы сделать мультиархитектурную поддержку по-настоящему полезной, библиотеки требовалось перепаковать, переместив их в каталог, соответствующий архитектуре,
чтобы можно было установить несколько копий (для разных архитектур) одновременно.
Такие обновлённые пакеты содержат заголовок "
Multi-Arch: same
", указывающий системе управления пакетами, что разные архитектуры пакетов можно устанавливать совместно (и что эти пакеты могут удовлетворять зависимости только пакетов той же архитектуры). Так как поддержка мультиархитектуры была добавлена только в Debian
Wheezy, ещё не все библиотеки преобразованы.
$
dpkg -s gcc-4.9-base
dpkg-query: ошибка: --status требует корректное имя пакета, но 'gcc-4.9-base' таковым не является: неоднозначное имя пакета 'gcc-4.9-base' с более чем одним установленным экземпляром
Используйте параметр --help для вывода справки по запросам пакетов.
$
dpkg -s gcc-4.9-base:amd64 gcc-4.9-base:armhf | grep ^Multi
Multi-Arch: same
Multi-Arch: same
$
dpkg -L libgcc1:amd64 |grep .so
/lib/x86_64-linux-gnu/libgcc_s.so.1
$
dpkg -S /usr/share/doc/gcc-4.9-base/copyright
gcc-4.9-base:amd64, gcc-4.9-base:armhf: /usr/share/doc/gcc-4.9-base/copyright
Стоит отметить, что для пакетов с полем
Multi-Arch: same следует указывать имена с названием архитектуры, чтобы их можно было однозначно идентифицировать. Они также могут иметь общие файлы с другими экземплярами того же пакета; dpkg в этом случае гарантирует, что все пакеты имеют бит-в-бит идентичные общие файлы. Все экземпляры пакета должны быть одной и той же версии, так что и обновляться они должны вместе.
Поддержка мультиархитектуры также привносит некоторые интересные особенности в механизм обработки зависимосей. Для удовлетворения зависимости требуется либо пакет, помеченный «
Multi-Arch: foreign
», или пакет с такой же архитектурой (при разрешении зависимости архитектуро-независимые пакеты считаются имеющими ту же архитектуру, что и система). Зависимость может также быть ослаблена, чтобы позволить пакету любой архитектуры удовлетворять её, с помощью синтаксиса
пакет:any
, но но чужеродные пакеты могут удовлетворять такую зависимость, только если они помечены «
Multi-Arch: allowed
».

5.5. Сосуществование с другими
пакетными системами
Пакеты Debian — это не единственный формат пакетов, используемый в мире свободного ПО. Основным конкурентом является формат RPM из дистрибутива Red Hat
Linux и его многочисленных производных. Red Hat — очень популярный коммерческий дистрибутив. Поэтому программное обеспечение, предоставяемое третьими сторонами,
как правило распространяется в виде пакетов RPM, а не Debian.
Столкнувшись с такой ситуацией, важно знать, что программа rpm, работающая с RPM- пакетами, доступна в виде пакета Debian, что делает возможным использование этого формата пакетов в Debian. Но нужно быть крайне осторожным и ограничиться такими операциями, как получение информации о пакете или проверка его целостности.
Устанавливать пакеты RPM с помощью rpm в Debian неблагоразумно; RPM использует свою собственную базу данных, отличную от используемой «родным» ПО (таким как
dpkg). По этой причине невозможно гарантировать стабильное сосуществование двух пакетных систем.
С другой стороны, утилита alien может преобразовывать пакеты RPM в Debian и наоборот.
СООБЩЕСТВО Поощрение внедрения
.deb
Если вы регулярно используете alien для установки пакетов RPM, которые предоставляет ваш поставщик, не стесняйтесь написать ему и дружелюбно объяснить, что вы предпочли бы формат
.deb
. Обратие внимание, что формат пакета — это ещё не всё: пакет
.deb
, полученный при помощи alien или подготовленный для версии Debian,
отличной от той, которой вы пользуетесь, или для производного дистрибутива вроде Ubuntu, возможно, не обеспечит того уровня качества и интеграции, как пакет, подготовленный специально для Debian Wheezy.
$
fakeroot alien --to-deb phpMyAdmin-2.0.5-2.noarch.rpm phpmyadmin_2.0.5-2_all.deb generated
$
ls -s phpmyadmin_2.0.5-2_all.deb
64 phpmyadmin_2.0.5-2_all.deb
Как вы можете убедиться, тут нет ничего сложного. Не забывайте, однако, что созданный пакет не содержит никакой информацию о зависимостях, поскольку зависимости в двух форматах пакетов не имеют строгого соответствия друг другу.
Поэтому администратору придется вручную проверить работоспособность преобразованного пакета, и это является главной причиной, по которой следует избегать использования полученных таким образом пакетов Debian. К счастью, в репозиторях
Debian находится самый большой набор пакетов программного обеспечения, и скорее всего то, что вы ищете, там уже есть.
Заглянув на страницу man команды alien, вы заметите, что эта программа может
работать и с другими форматами пакетов, в частности с используемым в дистрибутиве
Slackware (там используются самые обычные архивы tar.gz
).
Debian славится стабильностью программного обеспечения, развёрнутого инструментом dpkg. Набор инструментовi APT, описанный в следующей главе, не хуже, и при этом освобождает админстратора от управления статусом пакетов — важной, но непростой задачи.
1   ...   4   5   6   7   8   9   10   11   ...   32


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал