Перекомпиляция пакета может понадобиться например, для упаковки более новой версии программы,
наложения определенного патча или пересборки с особенными опциями.Устанавливаем программы, необходимые для сборки пакетов:
apt-get install devscripts
apt-get install build-essentialВ /etc/apt/sources.list раскомментируем строки с deb-src для нужного репозитория, например:
deb-src http://ftp.us.debian.org/debian/ etch main non-free contribЗагружаем пакет с исходными текстами в текущую директорию:
apt-get source имя_пакетаЕсли под рукой уже есть .dsc, tar.gz и diff.gz файлы, раскрываем их командой:
dpkg-source -x имя_пакета.dscУстанавливаем зависимые пакеты (библиотеки, заголовочные файлы и т.д.), требуемые для сборки:
apt-get build-dep имя_пакетаВносим изменения в появившейся директории "имя_пакета-версия".
Если собрались импортировать в пакет более новую версию программы, то воспользуемся утилитой uupdate:
uupdate -u путь_к_tar_gz_архиву_c_более_новой_версией_программы
При этом в автоматическом режиме будут адаптированы патчи от старой версии,
в случае несостыковок придется исправлять патчи руками.Собираем пакет:
cd имя_пакета-версия
debuild -us -uc"-us" и "-uc" указываем так как не являемся мантейнером пакета и не можем создать цифровую подпись для пакета.
Вместо враппера debuild можем напрямую использовать:
dpkg-buildpackage -rfakerootПосле сборки готовый пакет появится в родительской директории, устанавливаем его:
cd ..
dpkg -i <package_file.deb>Пример для пакета с MySQL:
mkdir build
cd build
apt-get source mysql-server-5.0
apt-get build-dep mysql-server-5.0
cd mysql-dfsg-5.0-5.0.32
debuild -us -uc
cd ..
dpkg -i *.deb
URL: http://www.ducea.com/2008/03/06/howto-recompile-debian-packages/
Обсуждается: http://www.opennet.me/tips/info/1615.shtml
Я так понял это сделаноиз за моей мольбы о помощи по перекомпиляции до новой версии пакета samba )))
Спасибо автору
Убивать.
За компиляцию без использования оберток типа pbuilder надо убивать.
>Убивать.
>За компиляцию без использования оберток типа pbuilder надо убивать.Боюсь даже спросить, какова казнь за wget-tar-xzf-make-make-install. Ж-)
Изгнание за пределы обитаемого космоса)))
Научите делать правильно!
>Научите делать правильно!статья которую я прочитал здесь же тоже имеет недостатки
у меня не не патчится пакет скачанный для lenny и sid
под etch
>статья которую я прочитал здесь же тоже имеет недостатки
>
>у меня не не патчится пакет скачанный для lenny и sid под etchИ при чём тут _статья_?
У каждого свой путь, в этом и заключается свобода, кто-то делает так, кто-то по-другому. Вообще говоря есть apt-src ... ;)
aptbuilder есть
pbuilder выглядит более правильным в смысле незасорения системы лишними библиотеками, которые при компиляции накапливаются. Но есть метод принципиально лучше. Ставится OpenVZ. Вся деятельность по компииляции пакетов идёт в отдельной виртуальной машине. По сути, это почти тот же chroot, который делает pbuilder - но гораздо проще и очевидней. Далее делаем так, как описано в http://www.debian.org/doc/manuals/quick-reference/ch-package... :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$ apt-get update
$ apt-get source package
$ dpkg-source -x package.dsc
$ cd package-version
... inspect required packages
$ dpkg-buildpackage -rfakeroot -us -ucТеперь помещаем .deb файлы в локальный репозиторий и пользуемся.
При компиляции PHP 5.2.5 под etch , например, мне потребовалось поставить >100 пакетов. Вычистить их потом можно, но проще сохранить конфигурацию виртуальной машины до следующей перекомпиляции - ведь за безопасностью тепетрь следить придётся самостоятельно.
Вообще есть другой дистриб, ибо нельзя из пакетного дистриба делать сырцы)
>Вообще есть другой дистриб, ибо нельзя из пакетного дистриба делать сырцы)Нельзя кому?