The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Перекомпиляция пакета в Debian и Ubuntu
Перекомпиляция пакета может понадобиться например, для упаковки более новой версии программы, 
наложения определенного патча или пересборки с особенными опциями.

Устанавливаем программы, необходимые для сборки пакетов:
  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
 
10.03.2008 , Источник: http://www.ducea.com/2008/03/06/how...
Ключи: dep, dpkg, debian, ubuntu, build, packet, uupdate / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Установка и работа с пакетами программ в Linux

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, VecH (ok), 09:30, 11/03/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я так понял это сделаноиз за моей мольбы о помощи по  перекомпиляции до новой версии пакета samba )))
    Спасибо автору
     
  • 1.2, Zulu (?), 17:33, 11/03/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Убивать.
    За компиляцию без использования оберток типа pbuilder надо убивать.
     
     
  • 2.3, Andrey Mitrofanov (?), 17:38, 11/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Убивать.
    >За компиляцию без использования оберток типа pbuilder надо убивать.

    Боюсь даже спросить, какова казнь за wget-tar-xzf-make-make-install. Ж-)

     
     
  • 3.9, Zulu (?), 11:39, 13/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Изгнание за пределы обитаемого космоса)))
     
  • 2.4, foe_nix (?), 19:05, 11/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Научите делать правильно!
     
     
  • 3.5, VecH (ok), 19:46, 11/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Научите делать правильно!

    статья которую я прочитал здесь же тоже имеет недостатки

    у меня не не патчится пакет скачанный для lenny и sid
    под etch

     
     
  • 4.7, Andrey Mitrofanov (?), 10:41, 12/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >статья которую я прочитал здесь же тоже имеет недостатки
    >
    >у меня не не патчится пакет скачанный для lenny и sid под etch

    И при чём тут _статья_?

     
  • 2.8, receiver (?), 15:06, 12/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    У каждого свой путь, в этом и заключается свобода, кто-то делает так, кто-то по-другому. Вообще говоря есть apt-src ... ;)
     

  • 1.10, Somewho (?), 13:48, 13/03/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    aptbuilder есть
     
  • 1.11, Pilat (?), 14:48, 16/03/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    pbuilder выглядит более правильным в смысле незасорения системы лишними библиотеками, которые при компиляции накапливаются. Но есть метод принципиально лучше. Ставится OpenVZ. Вся деятельность по компииляции пакетов идёт в отдельной виртуальной машине. По сути, это почти тот же chroot, который делает pbuilder - но гораздо проще и очевидней. Далее делаем так, как описано в http://www.debian.org/doc/manuals/quick-reference/ch-package.en.html#s-port :

    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 пакетов. Вычистить их потом можно, но проще сохранить конфигурацию виртуальной машины до следующей перекомпиляции - ведь за безопасностью тепетрь следить придётся самостоятельно.

     
  • 1.12, Аноним (12), 16:50, 18/03/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вообще есть другой дистриб, ибо нельзя из пакетного дистриба делать сырцы)
     
     
  • 2.13, Pilat (ok), 17:35, 18/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Вообще есть другой дистриб, ибо нельзя из пакетного дистриба делать сырцы)

    Нельзя кому?

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру