nvbn 27.01.2009 18:45
How-to`s — Изучаем APT
Ты установил *ubuntu или Debian? Молодец. Что дальше? Это руководство поможет разобраться в системе управления пакетами APT. (Внимание, большой текст!)В начале был .tar.gz. Пользователи должны были сначала скомпилировать программы, которые они хотели использовать на своих системах GNU/Linux. Когда создавался Debian, возникла необходимость в системе управления пакетами, установленными на машине. Этой системе было дано имя dpkg. Этот известный `пакет' первым появился на GNU/Linux, прежде чем Red Hat решил создать собственную систему `rpm'. Затем перед создателями GNU/Linux быстро возникла новая дилемма. Им понадобился способ для быстрого, практического и эффективного пути установки пакетов, который должен автоматически обслуживать зависимости и сохранять настрочные файлы при обновлении. Тут снова, Debian вышел вперед и предложил миру APT, Advanced Packaging Tool, который затем был портирован Conectiva`ой для использования с rpm и был адаптирован некоторыми другими дистибутивами.
Как часть своей работы, APT использует файл, который содержит список 'источников', из которых могут быть скачаны пакеты. Это файл /etc/apt/sources.list.
Обычно этот файл имеет следующий формат:
1 |
deb http://host/debian distribution раздел1 раздел2 раздел3
|
Конечно, вышеприведенные записи являются просто примером и не должны использоваться. Первое слово в каждой строке, либо deb, либо deb-src, указывает тип архива: либо это двоичные (binary) пакеты (deb), которые являются пред-компилированными пакетами, которые готовы к использованию, либо пакеты с исходными текстами (deb-src), которые являются первоначальными исходными текстами программ с управляющим файлом Debian (.dsc) и файлом diff.gz, содержащим изменения, необходимые для `дебианизации' программы. Файл /etc/apt/sources.list может содержать несколько типов строк. APT знает как обращаться с архивами типов http, ftp, file (локальные файлы, напр., каталог, содержащий смонтированную файловую систему ISO9660) и ssh.
Иногда, вы можете располагать кучей пакетов .deb, которые вам хотелось бы устанавливать с помощью APT, чтобы зависимости обрабатывались автоматически.
Чтобы это сделать, создайте каталог и поместите в него .deb`ы, которые вам нужны. Например:
1 |
|
Вы можете изменить установки определений файла control из debian-пакета напрямую для вашего репозитория с помощью файла override. В этом файле вы можете определить какие-нибудь опции для перекрытия тех, которые приходят с пакетом. Это может выглядеть так:
package priority section
package - это имя пакета, priority - имеет значения low, medium или high, а section - это название раздела, в котором он находится. Имя файла не имеет значения, позже вы будете указывать его в качестве аргумента для команды dpkg-scanpackages. Если вы не хотите составлять файл override, тогда просто указывайте /dev/null. при вызове dpkg-scanpackages.
Из каталога /root дайте команду:
1 |
|
In the above line, file is the override file, the command generates a file Packages.gz that contains various informations about the packages, which are used by APT. To use the packages, finally, add: В вышеприведенной команде, file - это файл override, команда генерирует файл Packages.gz, который содержит различную информацию о пакетах, которые используются APT. Чтобы использовать пакеты, наконец, добавьте:
deb file:/root debs/
После всех этих манипуляций вы можете использовать команды APT как обычно. Вы также можете создать и репозиторий для исходных текстов. Для этого используется та же процедура, но помните, что вам нужны файлы .orig.tar.gz, .dsc и .diff.gz в каталоге, и вместо Packages.gz надо использовать Sources.gz. Также нужно использовать другую программу. Это программа dpkg-scansources. Командная строка выглядит примерно так:
dpkg-scansources debs | gzip > debs/Sources.gz
Обратите внимание на то, что программе dpkg-scansources не нужен override файл. Строка в sources.list:
1 |
|
Наиболее часто возникаемый вопрос, в основном у новичков: "какое зеркало Debian включать в sources.list?". Для выбора зеркала есть множество способов. Эксперты вероятно пользуются сценариями, которые измеряют продолжительность ping`ов до некоторых заркал. Но такая программа для вас уже имеется: netselect.
Чтобу установить netselect, сделайте как обычно:
1 |
|
При запуске программы без параметров отображается справка. При запуске с указанными в качестве параметров, разделенных пробелами, именами хостов (зеркал), она выдаст оценку и один из хостов. Эта оценка учитывает ожидаемую продолжительность пинга и количество переходов (хостов, которые должны быть пройдены до того, как пакеты дойдут до цели) и обратна пропорциональна ожидаемой скорости скачивания (т.е., чем она меньше, тем лучше). Программа указывает имя хоста, который имеет наименьшую оценку (полный список оценок можно просмотреть с помощью опции -vv ).
Список зеркал можно всегда найти в файле http://www.debian.org/mirror/mirrors_full.
Если вы предпочитает использовать для автоматической установки или обновления пакетов с помощью ваш CD-ROM, то можете поместить его в файл sources.list. Для этого используется программа apt-cdrom:
1 |
|
Система пакетов использует собственную базу данных для слежения за установленными, не установленными и доступными для установки пакетами. Программа apt-get использует эту базу данных для определения пути установки пакетов, требуемых пользователем, и для определения того, какие дополнительные пакеты нужны, чтобы выбранные пакеты работал корректно.
Чтобы обновить этот список, вы должны использовать команду apt-get update. Эта команда просматривает списки пакетов в архивах, указанных в файле /etc/apt/sources.list. Было бы неплохо запускать эту команду регулярно, чтобы ваша система всегда была в курсе об обновлениях доступных пакетов, особенно обновлениях безопасности.
Наконец-то, ожидание окончено! Ваш sources.list готов и списки доступных пакетов обновлены, теперь вам только остается дать команду apt-get, чтобы установить предпочитаемый пакет. Например, вы можете запустить:
1 |
|
APT будет искать в своей базе данных наиболее свежие версии пакетов и будет скачивать их из соответствующих архивов так, как они указаны в sources.list. В случаях, когда пакет зависит от другого -- как в варианте ниже -- APT проверит зависимости и установит необходимые пакеты. См. пример:
Пакет nautilus зависит от совместно-используемых библиотек, поэтому APT скачает их из архива. Если бы вы указали имена этих библиотек в командной строке apt-get, то APT не стал бы спрашивать у вас разрешения продолжать установку; он бы автоматически решил, что вы хотите установить все эти пакеты.
Это означает, что APT запрашивает подтверждения только тогда, когда нужно установить пакеты, которые не были перечислены в командной строке.
Вам могут быть полезны следующие опции apt-get:
-h справка
-d только загрузить - не устанавливать и не распаковывать архивы
-s ничего не делать реально, имитировать выполнение
-y предполагается ответ Yes на все вопросы, сами вопросы не выводить
-f продолжать, даже если проверка целостности не удачна
-u плюс ко всему показывать список обновленных пакетов
В одной строке можно задавать несколько пакетов. Скачанные из сети файлы помещаются в каталог для дальнейшей установки /var/cache/apt/archives.
Если вы обнаружили, что пакет испортился, или просто хотите переустановить файлы пакета более новой доступной версии, то вы можете использовать опцию --reinstall
Если пакет вам больше не нужен, то вы можете удалить его из вашей системы, используя APT. Чтобы это сделать просто введите: apt-get remove package. При этом останутся настроечные файлы. Для полного удаления пакета используйте ключ --purge
Аналогично действию install, вы можете инвертировать действие remove для определенных пакетов. В случае удаления, если вы добавите знак '+' справа от имени пакета, то пакет будет установлен, а не удален.
1 |
|
Обновления пакетов - это конек системы APT. Это может быть сделано одной командой:
1 |
|
Вы можете использовать эту команду для обновления пакетов в том же самом дистрибутиве, равно как и при обновлении существующего дистрибутива до нового, хотя для последнего действия предназначена команда
1 |
|
Эту команду полезно запускать с опцией -u. Эта опция заставляет APT показывать полный список пакетов, предназначенных для обновления. Без нее вы будете обновляться вслепую. APT последние версии каждого из пакетов и установит их в правильном порядке. Поэтому очень важно запустить перед этим apt-get update. Процесс очень прост. Обратите внимание, что в первых строках apt-get говорит, что некоторые пакеты были kept back. Это означает, что новые версии некоторых пакетов не будут установлены по некоторым причинам. Возможными причинами могут быть битые зависимости (пакет, от которого он зависит не доступен для скачивания) или новые зависимости (пакет последней версии зависит от новых пакетов).
В первом случае прозрачного решения не существует. Для второго случая, должна помочь команда apt-get install для указанного в вопросе пакета, так ка это приведет к скачиванию зависимости. Даже более прозрачное решение сосотоит в использовании dist-upgrade.
Люди часто используют тестируемый дистрибутив, потому что он более сьабилен, чем нестабильный и более новый, чем стабильный. Однако пользователи, которые хотят работать с последними версиями некоторых пакетов, но при этом не доверяют им из-за боязни дестабилизировать всю систему, имеют возможность работать со смешанными тестируемыми/стабильными системами. Или по-другому - более консервативным пользователям возможно нужна смешанная стабильная/тестируемая система.
Чтобы этого добиться, поместите следующую строку в /etc/apt/apt.conf:
APT::Default-Release "testing";
Затем, при установке пакетов из нестабильного дистрибутива, просто используйте ключ -t:
1 |
|
Не забывайте, что для того, чтобы использовать пакеты этой версии Debian, нужно внести дополнения в файл /etc/apt/sources.list. Применительно к нашему примеру, нам нужно добавить строки источников для дистрибутива unstable после аналогичных строк для дистрибутива testing.
1 |
|
обеспечивает безопасный путь обновления системы для пользователей смешанных дистрибутивов, без получения лишних частей нестабильного дистрибутива, чем это требуется в действительности. К примеру, можно обновить только нестабильные пакеты командой:
1 |
|
Многие пользователи Debian используют только одну локаль. Бразильские пользователи Debian, например, обычно используют локаль pt_BR и не интересуются локалью es.
localepurge - это очень полезный инструмент для таких пользователей. Вы можете освободить много места, если оставите только те локали, которые вы действительно используете. Просто дайте команду
1 |
|
Пакет очень легко настраивается, debconf обеспечивает его пошаговую настройку. Однако будьте осторожны при ответе на первый вопрос, неправильный ответ может повлечь удаление всех файлов локалей, даже тех, которые вы используете. После этого восстановить их можно будет только переустановкой всех пакетов, их предоставляющих.
apt-show-versions - это программа, которая показывает, какие пакеты в системе можно обновить и еще некоторую полезную информацию. Опция -u отображает список обновляемых пакетов:
1 |
$ apt-show-versions -u
|
Для поиска имени пакета используем apt-cache.
Вы собираете пакет, и вдруг, бах! Ошибка из-за того, что нет какого-то там нужного файла .h. От такого поворота событий вас может спасти программа auto-apt. Она запрашивает какие пакеты установить, если они нужны, останавливает соответствующий процесс и продолжает его после установки пакета.
Для этого, в основном, запустите:
1 |
|
Где `command' - это команда, при выполнении которой может обнаружиться отстутствие некоего файла. Например:
1 |
|
Она запросит установку необходимых пакетов и вызовет apt-get автоматически. Если вы работаете в X, то графический интерфейс будет по умолчанию заменен на текстовый.
Auto-apt сохраняет базы данных в обновленном состоянии, чтобы быть более эффективной. Это достигается вызовом команд auto-apt update, auto-apt updatedb и auto-apt update-local.
Если вы хотите установить пакет и не можете найти его название с помощью apt-cache, но знаете имя программы этого пакета или имя любого другого файла из этого пакета, то для поиска имени пакета вы можете воспользоваться программой apt-file. Используется она примерно так:
1 |
|
Также вы может посмотреть список файлов в пакете командой:
1 |
|
apt-file хранит базу данных, в которой отслеживает какие файлы содержат пакеты также, как это делает auto-apt и ему нужно ее обновлять. Это делается так:
1 |
|
По умолчанию, apt-file использует базу данных auto-apt.
Каждый пакет устанваливает в свой каталог документации (/usr/share/doc/packagename) файл, называемый changelog.Debian.gz, который содержит список изменений, сделанных в пакете в последней версии.
В мире свободного ПО общепринято изучать исходный код или доже делать исправления ошибок. Чтобы это делать, вы должны скачать исходный текст программ. Система APT предлагает легкий путь для получения исходных текстов пакетов для множества программ, составляющих дистрибутив, включая все файлы, необходимые для создания .deb-файлов программ.
Другой способ использования исходных текстов в Debian - адаптация более новых версий программ из, например, нестабильного дистрибутива для использования со стабильным дистрибутивом. Сборка пакета в среде стабильного дистрибутива обечпечит генерацию .deb с зависимостями, соответствующими пакетам, доступным в дистрибутиве.
Для этого запись deb-src в вашем файле /etc/apt/sources.list должна указывать на нестабильный дистрибутив. Она должна быть разрешена (раскомментирована).
Для скачивания пакетов исходных текстов рекомендуется использовать команду:
1 |
|
Команда должна скачать три файла: .orig.tar.gz, .dsc и .diff.gz. В случае, если пакеты создавались исключительно для Debian, последний из них не скачивается и первый файл не имеет вставки "orig" в своем имени.
Файл .dsc пользуется командой dpkg-source для распаковки пакета исходных текстов в каталог packagename-version. Внутри каждого скачанного пакета исходных текстов есть каталог debian/, который содержит файлы, необходимые для создания пакета .deb.
Для автоматического построения пакета из скачиваемых исходных текстов просто укажите ключ -b в командной строке, примерно так:
1 |
|
Если вы рашаете не создавать .deb при скачивани, то вы можете создать его позже командой:
1 |
|
из каталога, который был создан для пакета после скачивания.
Есть разница между методом source команды apt-get и ее другими методами. Метод source может быть использован обычными пользователями, без необходимости иметь права root. Файлы скачиваются в каталог, из которого вызывается команда apt-get source package.
Обычно, для того, чтобы пакет можно было собрать, нужны некоторые заголовочные файлы и совместно-используемые библиотеки. Все пакеты исходных текстов имеют в своих управляющих файлах поле 'Build-Depends:', которое указывает дополнительные пакеты, которые необходимы для построения пакета из исходных текстов.
APT имеет простой метод скачивания этих пакетов. Просто запустите apt-get build-dep package, где `package' - это имя пакета, который вы собираетесь построить.
Ошибки случаются зачастую из-за невнимательности пользователей. Далее будут рассмотрены несколько частых ошибок и методв их устранения.
Если вы получили пимерно такое сообщение при выполнении команды
тo вы забыли запустить apt-get update после последних изменений в файле /etc/apt/sources.list.
Ошибка выглядит вот так:
1 |
E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
|
если вы пытаетесь воспользоваться любым другим методом apt-get, кроме source, не имея прав root.
Похожие ошибки могут возникать при запске двух копий программы apt-get в одно и то же время, или даже если вы пытаетесь запустить apt-get одновременно с dpkg. Одновременно с другими можно запускать только метод source.
Если установка прервалась на середине процесса, и вы больше не можете ни установить, ни удалить пакеты, то попробуйте эти две команды:
1 |
|
И затем попробуйте снова. Может потребоваться запустить вторую из вышеуказанных команд более одного раза. Это важный урок для тех любителей приключений, которые используют `unstable'.
Если вы в тупике, посмотрите вполне доходчивую документацию для системы пакетов Debian. Вам могут помочь --help'ы и страницы руководств, также как и документация в каталоге /usr/share/doc, например, в подкаталоге
1 |
|
Если документация вас не просвещает, то попробуйте поискать ответ в списках почтовой расылки Debian. Вы можете найти более подробную информацию об указанных списках рассылки на веб-сайте Debian: http://www.debian.org.
(полная статья по адресу http://www.debian.org/doc/manuals/apt-howto/index.ru.html)
Дополнение:
http://mydebianblog.blogspot.com/2008/08/debian-cd-dvd.html
Имеется несколько выкачанных ISO-образов с репозиториями, например Debian GNU/Linux, и нужно их подключить для работы. Не обязательно пропаливать их на диск и постоянно вставлять-извлекать диски. Можно примонтировать ISO-образы и добавить репозитории, чтобы пакеты стали доступны. Для опытных пользователей это, конечно, не вопрос, но новичкам это даётся нелегко. Ниже - краткий рецепт по этому поводу.
Итак, есть у вас к примеру несколько скачанных ISO-образов с репозиториями Debian, и нужно добавить репозитории для использования при установке программ. Для этого сначала создаём точки монтирования:
sudo mkdir /mnt/setup/etchdisk1
и так для каждого ISO-образа. Дальше можно сделать простой скрипт:
#! /bin/sh
sudo mount -t iso9660 /mnt/wd250Gb/debian-40r0-i386-DVD-1.iso /mnt/setup/etchdisk1 -o loop
sudo mount -t iso9660 /mnt/wd250Gb/debian-40r0-i386-DVD-2.iso /mnt/setup/etchdisk2 -o loop
sudo mount -t iso9660 /mnt/wd250Gb/debian-40r0-i386-DVD-3.iso /mnt/setup/etchdisk3 -o loop
После этого надо дать скрипту права исполнения:
sudo chmod 755 ./debiandvd
Если скрипт лежит в текущем каталоге. После этого правим sources.list, который лежит в каталоге /etc/apt/ до следующего состояния:
deb file:///mnt/setup/etchdisk1/ stable contrib main
deb file:///mnt/setup/etchdisk2/ stable contrib main
deb file:///mnt/setup/etchdisk3/ stable contrib main
После этого надо выполнить
sudo aptitude update
Username 27.01.2009 20:15 #
+ -1 -
я прошу прощения, ниасилил, но там вроде не было упоминания, можно ли подцепить iso как репозитарий? В SuSE это можно, и сама функция очень удобна.
Пока что не дочитал, завтра уже буду "доосиливать" :)
Предварительные впечатления: сумбурно (логически построено более-менее правильно, но оформление превращает весьма неплохой материал просто в кучу букв). Оформление хромает (консольный вывод можно было бы отделить от текста; сам текст стоило бы разбить на какие-то логические блоки и дать каждому заголовки).
Имхо, стоит наполнять сайт качественным контентом — пусть даже в ущерб скорости появления тут этого контента.
Пока что вроде всё :)
Предварительные впечатления: сумбурно (логически построено более-менее правильно, но оформление превращает весьма неплохой материал просто в кучу букв). Оформление хромает (консольный вывод можно было бы отделить от текста; сам текст стоило бы разбить на какие-то логические блоки и дать каждому заголовки).
Имхо, стоит наполнять сайт качественным контентом — пусть даже в ущерб скорости появления тут этого контента.
Пока что вроде всё :)
Кошерная статья.
Спасибо!
Спасибо!