Сборка deb-пакетов в домашних условиях.

Форум предназначен для новичков. В нем предполагается рассматривать вопросы, которые встают на первых этапах освоения Linux
Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сборка deb-пакетов в домашних условиях.

Сообщение Llama »

собственно, временами хочется поставить на debian-подобные системы что-то из исходников...
Дале описан самый быстрй и самый изуверский способ получения deb-пакетов из исходников ;)

1) Все делаем от юзера.
2) Распаковываем исходники, читаем INSTALL, ./configure --help, запускаем ./configure с нужными опциями, запускаем make.
3) после успешной компиляции создаем некий каталог, например /tmp/package
4) делаем make install DESTDIR=/tmp/package/
внимательно наблюдаем за выводом make install - если небыло ругни на permission denied - значит добрые разработчики предусмотрели обработку параметра DESTDIR и нам повезло ;)
5) в /tmp/package создаем подкаталог DEBIAN, в нем
- файл control.
примерное содержимое файла:

Код: Выделить всё

Package: licq-plugin-icqnd
Architecture: i386
Depends: licq
Provides: licq-plugin
Priority: optional
Version: 0.1.9.3
Maintainer: nobody care
Description: graphical user interface plug-in for Licq using GTK2
 This package provides the GTK2-based graphical user interface to the Licq
Надеюсь, в поянениях не нуждается...
Далее, выполняем команду:
dpkg-deb -b /tmp/package package-version-arch.deb
И получаем файл package-version-arch.deb пригодный к установке.

Более человечный способ описан напрмер тут:
http://women.alioth.debian.org/wiki/ind ... houtHelper
Но мне как-то и эотго хватает ;)
Последний раз редактировалось Llama 03 май 2007, 18:37, всего редактировалось 1 раз.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
kif0rt
Неотъемлемая часть форума
Сообщения: 1371
Зарегистрирован: 03 ноя 2004, 01:49
Откуда: Минск

Сообщение kif0rt »

Вот спасибо ... давно искал подобную инфу. теперь соберу k3b 0.12.9.
Ненасилие ещё никому не помогало
Trying is the first step towards failure (c) Homer Simpson

Аватара пользователя
*Sasha*
Неотъемлемая часть форума
Сообщения: 258
Зарегистрирован: 12 мар 2005, 01:50
Откуда: Минск
Контактная информация:

Сообщение *Sasha* »

kif0rt,
А почему не 0.12.10?
Debian

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Еще hint: допустим путем безчеловечных экспириментов поломана система зависимостей в дистриубтиве...

Например, какомй-то пакету очень хочется видеть
пакет mozilla-firefox-gnome-support, а у нас есть только firefox-gnome-support. Далее есть два пути:
1) Правильный - сделать apt-get build-dep firefox-gnome-support && apt-get sources firefox-gnome-support, после чего поправить debian/control дописав в описание пакета строчку Provides: mozilla-firefox-gnome-support или поправив существующий Provides:, после чего сделать fakeroot dpkg-buildpackage. Подождать пока все скомпилится, поставить поправленый пакет. Но на dialup так сделать трудно - больно много возможно придется качать.
2) Неправильный путь. Создаем пустой каталог, в нем - DEBIAN/control примерно такого содержания, после чего собираем пакеты как было описано выше и ставим его.

Код: Выделить всё

Package: fake-mozilla-firefox-gnome-support
Maintainer: nobody care
Architecture: i386
Section: gnome
Depends: firefox
Provides: mozilla-firefox-gnome-support
Version: 0.1
Description: Package to provide fake-mozilla-firefox-gnome-support
 Package to provide fake-mozilla-firefox-gnome-support - from scratch
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
kif0rt
Неотъемлемая часть форума
Сообщения: 1371
Зарегистрирован: 03 ноя 2004, 01:49
Откуда: Минск

Сообщение kif0rt »

*Sasha* писал(а):kif0rt,
А почему не 0.12.10?
хм ... верси плодятся как кролики. щас будем качать.
Ненасилие ещё никому не помогало
Trying is the first step towards failure (c) Homer Simpson

Berserker
Неотъемлемая часть форума
Сообщения: 279
Зарегистрирован: 23 апр 2005, 21:13
Откуда: minsk

Re: Сборка deb-пакетов в домашних усоваиях.

Сообщение Berserker »

Llama писал(а): 4) делаем make install DESTDIR=/tmp/package/
внимательно наблюдаем за выводом make install - если небыло ругни на permission denied - значит добрые разработчики предусмотрели обработку параметра DESTDIR и нам повезло ;)
Тут можно и посмотреть Makefile - куда оно собирается ставить то , что скомпилено, и отредатровать соответствующую переменную. Обычно ее значение "/usr/local/".

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Ну... /usr/local/ вобщем-то можно задать и на этапе ./configure - там будет правильнее.
ИМХО править в makefile префикс не стоит - ибо вполне может оказаться что при работает какой-нить скрипт который модифицирует скажем в скриптах/либах/модулях некие занчения соответсвенно prefix (вполне вероятно для программ использующих что-то интерпретируемое в качестве модулей)
Правильнее будет посмотреть в Makefile каким образом вызывается install - почти всегда это что-то вида

Код: Выделить всё

INSTALL = /path/to/install 
и вызывается оно чем-то вида $(INSTALL) $(src-localtion)/binary-file $(INSTALL_ROOT)/$(BINARY_PREFIX)
Соответсвенно проверяем по MAKEFILE - скорее всего переменная INSTALL_ROOT в Makefile нигде не задается, соотвественно ее можно задать перед вызовом:

Код: Выделить всё

INSTALL_ROOT=/tmp/package make install
PS: для ленивых - INSTALL_ROOT используется при сборке php ;)
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
phaoost
Неотъемлемая часть форума
Сообщения: 289
Зарегистрирован: 12 янв 2005, 01:22
Откуда: Minsk
Контактная информация:

Сообщение phaoost »

такой вот трабл: ставлю arts из исходников при этом убив старый. прописываю в control Provides: libartsc0, libartsc0-dev, libarts1, libarts1-dev, arts
cтавлю собраный пакет, запускаю aptitude.
в результате собраный пакет стоит, но новых виртуальных пакетов нет. при этом в инфомации об установленном пакете указано:

Код: Выделить всё

i    --\ arts-1.5.2                                                             1.5.2-1    <none>
  Description: arts

  Priority: extra
  Section: checkinstall
  Maintainer: root@localhost.localdomain
  Compressed size: 0
  Uncompressed size: 5528k
  Source Package: arts-1.5.2
  --\ Package names provided by arts-1.5.2
p  U arts                                                                       <none>     1.3.2-3
p  U libarts1-dev                                                               <none>     1.3.2-3
p  U libartsc0-dev                                                              <none>     1.3.2-3
p  U libarts1                                                                   <none>     1.3.2-3
p  U libartsc0                                                                  <none>     1.3.2-3
  --\ Packages which depend on arts-1.5.2
    --\ Depends
p  U  kde-core 5:44
p  U  kde-devel 5:44
p  U  libsdl1.2-dev 1.2.7+1.2.8cvs20041007-4.1
p  U  libarts1-dev 1.3.2-3
p  U  kde-devel 5:44
p  U  vlc-plugin-arts 0.8.4-svn20050920-3+hal0+linex1
p  U  vlc-plugin-arts 0.8.1.svn20050314-1
    --\ Suggests
i  U  libxine1 1.0.1-1.3bpo2
p  U  libxine1 1.0.1-1sarge1
i  U  libao2 0.8.6-1
  --\ Versions
i    1.5.2-1
т.е. пописанные мной имена он определяет, но так как нет виртуального пакета, то другие проги не хотят его воспринимать как новую версию указанных в provides пакетов. как сделать, чтоб появились соответствующие виртуальные пакеты, чтобы их другие проги видели?
cheers,
phaoost.

Аватара пользователя
rain
Неотъемлемая часть форума
Сообщения: 219
Зарегистрирован: 02 июл 2006, 20:56
Контактная информация:

Сообщение rain »

Код: Выделить всё

 apt-get install checkinstall 

Код: Выделить всё

 ./configure && make && checkinstall 
При сборке пакета можно будет указать данные о пакете и т.п. Собранный пакет будет лежать в корне дерева исходников. Его можно сохранить для последующих установок (сам пакет уже установлен)

По поводу предыдущего поста - из имени пакета убери версию. При checkinstall это второй пункт.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

если уж юзать автоматизированные тулзы - то проще и правильнее сделать apt-get install maint-guide-ru && zless /usr/share/doc/maint-guide-ru/maint-guide/maint-guide.ru.txt.gz |iconv -f koi8r |less родные дебиановские dh-* тулзы не сложнее а результат получается ИМХО чуть более корректным.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Igorila
Заглянувший
Сообщения: 2
Зарегистрирован: 15 окт 2008, 02:21

Re: Сборка deb-пакетов в домашних условиях.

Сообщение Igorila »

вот такая вот поблема
checking for a BSD-compatible install... /usr/bin/instal -c
checking whether bild environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking build system type... i686-pc-gnulibc1
checking host system type... i686-pc-gnulibc1
configure: error: "Sorry, build is only supported for GNU/Linux"
ну не как не пойму чего не хватает.

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Re: Сборка deb-пакетов в домашних условиях.

Сообщение mend0za »

Igorila, подземный стук не лечим

не указано что собирается, в каком окружении и чем
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

red1ynx
Заглянувший
Сообщения: 5
Зарегистрирован: 24 окт 2009, 15:45

Re: Сборка deb-пакетов в домашних условиях.

Сообщение red1ynx »

Может есть способ автоматизировать процесс сборки? Т.е. из архива исходников получить deb-пакет с минимальными движениями.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Re: Сборка deb-пакетов в домашних условиях.

Сообщение Llama »

red1ynx, checkinstall
Опыт растет прямо пропорционально выведенному из строя оборудованию

Ответить