From: Игнатенко Владимир <bcspm3@ukr.net.>
Date: Wed, 24 Jan 2008 18:21:07 +0000 (UTC)
Subject: Оптимизация Debian пакетов под свой компьютер при помощи apt-build
Julien Reveret <shaddai@debian-fr.org.> (автор французского текста)
Julien Danjou <acid@debian.org.> (английский перевод)
Игнатенко Владимир <bcspm3@ukr.net.> (русский перевод)
Вступление
Возможно вы новичок в мире линукса или опытный пользователь, но не
достаточно хорошо знаете, как работает система пакетов Debian'а. И вам
интересно как устанавливать программы так, что бы система правильно
обрабатывала обновления и зависимости. Возможные методы установки
программ такие: скачивание архива с исходными текстами, распаковка,
запуск компилирующих скриптов, и затем установка. Лёгкая задача для
любого пользователя линукса, но это не будет согласовано с системой
пакетов Debian'a. Второе решение - использование stow, для более
удобного управления обновлениями, но stow не учитывает зависимости.
Лучшее решение - использование apt-build для перекомпиляции программ
уже упакованных для Debian'a.
Сразу после установки будет пару вопросов: про папку для сборки, опции
компилятора, архитектуру процессора. Эта информация сохраняется в
/etc/apt/apt-build.conf. Если вы сделаете ошибку, то сможете вернутся
и исправить её. Вот пример:
Касательно параметров build-dir и repository-dir, убедитесь, что эти
папки расположены на разделе с достаточным количеством свободного
места. Большинство пакетов (все ?) собраны с level 2 оптимизацией, так
что если вы выберете level 3 и укажете архитектуру вашего процессора,
можно ожидать увеличение производительности. Здесь, Gentoo-фаны сразу
спросят меня: "а флаги?". К сожалению, их нет. Под "флагами",
Gentoo-пользователи подразумевают билиотеки с которыми собираются
программы. Обычному пользователю не стоит менять зависимости пакетов.
Если вы всё же так поступите, то можете сделать ошибку которой не было
в первоначальном пакете. Не составляйте отчёт про ошибку. У вас уже не
официальный Debian, а ваш собственный. Наконец, вам понадобится
дополнительная строка в вашем /etc/apt/sources.list, если её там ещё
нет:
deb-src ftp://debian_mirror/ [stable|testing|unstable] main contrib
Запустите apt-get update для повторной синхронизации индекса пакетов.
Всё. Вы готовы использовать apt-build!
Ну, и что теперь?
Рассмотрим в деталях основные команды apt-build'а. Фактически, подобно
apt-get'у, есть несколько ключевых слов, таких как update, upgrade,
install, source, clean-build.
Сначала, update команда. Она обновляет индекс списка пакетов, файлы в
/var/lib/apt/lists. Команда upgrade обновляет все пакеты. Команду
install разберём на примере:
[shaddai@patator]~ $ sudo apt-build install memstat
-----> Installing build dependencies (for memstat) <-----
Reading Package Lists... Done
Building Dependency Tree... Done
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
-----> Downloading memstat source (memstat) <-----
Reading Package Lists... Done
Building Dependency Tree... Done
Need to get 22.4kB of source archives.
Get:1 ftp://127.0.0.1 1.0.4/main memstat 0.4-1 (dsc) [482B]
Get:2 ftp://127.0.0.1 1.0.4/main memstat 0.4-1 (tar) [21.9kB]
Fetched 22.4kB in 0s (322kB/s)
dpkg-source: extracting memstat in memstat-0.4
-----> Building memstat <-----
...
...
...
dpkg-genchanges: binary-only upload - not including any source code
dpkg-buildpackage: binary only upload (no source included)
-----> Moving packages to repository <-----
-----> Updating repository <-----
Using: -O3 -mcpu=pentium2 -march=pentium2
...
...
Reading Package Lists... Done
Building Dependency Tree... Done
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
memstat
Как видим, apt-build делает несколько шагов: установка пакетов
необходимых для компиляции, скачивание исходных текстов, затем
компиляция и установка пакета. Если захотите сами переупаковывать
программы, используйте dpkg-buildpackage. Он не устанавливает
зависимости, как apt-build, переупаковка с которым может быть сложной
и требовать дополнительных навыков. До сих пор, мы видели только
простую перекомпиляцию, с целью оптимизации, если вы хотите изменить
исходные тексты, изменить файл правил или другие файлы в debian/
папке, apt-build может быть полезным, и создать вам основу пакета.
Однако, я рекомендую прочитать руководство разработчика.
Что ещё?
Давайте, посмотрим на команду: source. Она скачивает пакет с исходными
текстами, diff-файл и файлы, необходимые для сборки пакета (правила,
управление, файлы со списком изменений и т.д.), она размещает это всё
в папке для сборки, затем распаковывает и накладывает патч из
diff-файла. Пример:
[shaddai@patator]~ $ sudo apt-build source ethereal
-----> Downloading ethereal source (ethereal) <-----
Reading Package Lists... Done
Building Dependency Tree... Done
Need to get 6170kB of source archives.
Get:1 ftp://127.0.0.1 1.0.4/main ethereal 0.10.4-2.1 (dsc) [821B]
Get:2 ftp://127.0.0.1 1.0.4/main ethereal 0.10.4-2.1 (tar) [6154kB]
Get:3 ftp://127.0.0.1 1.0.4/main ethereal 0.10.4-2.1 (diff) [14.6kB]
Fetched 6170kB in 1s (3533kB/s)
dpkg-source: extracting ethereal in ethereal-0.10.4
Обратите внимание на третий скачанный файл. Это описание пакета.
Теперь у вас есть исходные тексты и файлы, необходимые для сборки
пакета, который вы можете изменять, как хотите. Как только закончите
изменения можете собрать и установить пакет командой: apt-build
install изменённый_пакет. Но, как уже было сказано ранее, у вас теперь
ваш собственный пакет. Ваши изменения могут создать новые ошибки.
Изменение пакетов это опасная игра, если не знать что делаешь.
Основные параметры мы уже знаем, но есть ещё несколько тонкостей.
Например: clean-build это то же самое для apt-build'а что и clean
команда для apt-get'а, но она очищает папку сборки, а не репозиторий.
Вы можете удалить пакет командой remove, или получить информацию по
исходным текстам командой info.
Наконец, взгляните на страницу документации apt-build'а, на которой
есть несколько интересных параметров. Но самое интересное я придержал
напоследок.
С помощью if и apt-build'а мы тоже можем пересобрать все установленные
пакеты!
Полная пересборка всех пакетов системы
Последняя команда, о которой я хочу рассказать, - это world. Это слово
должно кое что напомнить людям, которые любят маленького красного
дружка. И в самом деле, на BSD-системах можно перекомпилировать все
порты. Просто перейдите в папку /usr/ports и наберите make world. Эта
идея была использована автором apt-build'a, и вот что будет если вы
захотите пересобрать всё:
[shaddai@patator]~ $ sudo apt-build world
-----> Rebuilding the world ! <-----
You should read README.Debian first
[shaddai@patator]~ $
Чтение этого знаменитого README похоже обязательно. Мы узнаём, что
надо составить список пакетов, которые мы хотим перекомпилировать и
установить вместо текущих пакетов. Из списка следует убрать некоторые
проблемные пакеты, такие как: gcc, libc6, или жизненно важные.
Давайте, построим этот список:
После редактирования этого списка, можете делать apt-build world для
перекомпиляции и оптимизации всей вашей системы.
И вот он, волнующий момент!
Вы использовали apt-build с целью создания вашего собственного пакета,
и после обновления командой apt-get dist-upgrade, один из ваших
великолепных пакетов заменён на официальный. Как жаль. Вы можете
избежать этого, привязав ваш пакет к apt-build'у. Для задания более
высокого приоритета пакету собранному apt-build'ом надо
отредактировать файл /etc/apt/preferences примерно так:
Таким образом, вы можете не беспокоится, что обновление дистрибутива
заменит ваш пакет официальным. Для проверки приоритетов репозитория
используйте команду apt-cache policy, которая выведет примерно
следующее:
Использование привязки пакетов не имеет побочных последствий. Но
будьте внимательны при обновлениях. Действительно, если вы решите
пересобрать библиотеку, от которой зависит несколько программ, и она
не будет обновляться, то это может заблокировать обновление пакетов.
Который час? 15 p.m. ?
Пора закругляться. Надеюсь, я внушил вам сильное желание использовать
apt-build - полезный и интересный инструмент. Автор apt-build'а
предупреждает вас не перекомпилировать gcc и некоторые другие пакеты.
И ни я, ни он не отвечаем за ваши ошибки. Так что если убьёте ваш
Debian, не пишите мне (ну разве только что бы рассмешить). И ещё
учтите, что apt-build не создаёт новых пакетов. Если программа,
которую вы хотите установить, не упакована для Debian'а, apt-build не
сможет скачать исходные тексты с зеркал Debian'а и откомпилировать их.
Copyright 2004 par Julien Reveret
Ce document est protИgИ par la GNU Free Documentation Licence version
1.1, ou toute future version publiИe par la Free Software Foundation
1090 Прочтений • [Оптимизация Debian пакетов под свой компьютер при помощи apt-build (apt deb dpkg debian repository sources build)] [08.05.2012] [Комментариев: 0]