Budowanie paczki deb z zależno

Tematy związane z oprogramowaniem, instalacją, konfiguracją
rryk
Posty: 50
Rejestracja: 13 stycznia 2009, 08:49

Budowanie paczki deb z zależnościami

Post autor: rryk »

Czy ktoś umie i mógłby wyjaśnić jak zrobić krok po kroku z źródeł paczkę deb z zależnościami? Konkretnie chodzi mi o zbudowanie paczki programu ekg2 tak aby był skonfigurowany z opcjami:

Kod: Zaznacz cały

./configure --with-python --enable-unicode
Awatar użytkownika
jasiekmarc
Posty: 88
Rejestracja: 27 września 2009, 20:05
Lokalizacja: Wrocław

Post autor: jasiekmarc »

Jeśli chcesz zbudować paczkę dla swojej architektury uprzednio skompilowawszy program, to jest tutaj. Jeśli chcesz zrobić piękną i porządną kompilowaną paczkę deb-src to jest oficjalny podręcznik: http://www.debian.org/doc/maint-guide/
rryk
Posty: 50
Rejestracja: 13 stycznia 2009, 08:49

Post autor: rryk »

Pierwszy sposób byłby mi pomocny jednak problem jest w tym, że nie wiem jakie konkretnie zależności ma program, a ręczne ich wybieranie z pośród ,,configure'' to mordęga.
Awatar użytkownika
jasiekmarc
Posty: 88
Rejestracja: 27 września 2009, 20:05
Lokalizacja: Wrocław

Post autor: jasiekmarc »

Jeszcze jednym sposobem może być pobranie paczki źródłowej ekg2 (http://packages.debian.org/experimental/ekg2 - po prawej plik orig.tar.gz i diff.gz). Następnie w diff.gz w pliku debian/rules dodać odpowiednie argumenty do ./configure (w archiwum jest wynik diffa z którego można zrobić poprawną strukturę katalogów za pomocą polecenia patch - patrz maint-guide). Potem elegancko zbudować dpkg-buildpackage, a zależności budowania dociągnąć (apt-get build-dep).
rryk
Posty: 50
Rejestracja: 13 stycznia 2009, 08:49

Post autor: rryk »

To brzmi troche skomplikowanie - mógłbyś jakąś instrukcje szczegółową (taką dla kompletnych idiotów) walnąć?
Awatar użytkownika
jasiekmarc
Posty: 88
Rejestracja: 27 września 2009, 20:05
Lokalizacja: Wrocław

Post autor: jasiekmarc »

Ok, howto dla idiotów:
1. Pobieramy http://ftp.de.debian.org/debian/pool/ma ... rig.tar.gz i http://ftp.de.debian.org/debian/pool/ma ... -1.diff.gz do folderu blabla
2. Rozpakowujemy orig (jak rozpakować, to już musisz wiedzieć/poszukać sam) i diff. Chcemy w katalogu blabla mieć:

Kod: Zaznacz cały

$ls blabla
ekg2-20100221+1200/  ekg2_20100221+1200-1.diff  ekg2_20100221+1200.orig.tar.gz
ważne, żeby nazwy się dokładnie zgadzały. Na przykład w nazwie folderu ma być myślnik - nie podkreślnik.
3. Będąc w blabla wykonujemy polecenie

Kod: Zaznacz cały

$ patch -p0 < ekg2_20100221+1200-1.diff
4. Włazimy w ekg2-20100221+1200/debian.
5. Edytujemy plik rules. W miejscu, gdzie są opcje dla ./configure (jest ich dużo, łatwo zauważyć) dopisujemy swoje własne.
6. Włazimy w górę do ekg2-20100221+1200/.
7. (Trzeba mieć w /etc/apt/sources.list linijkę deb-src http://ftp.debian.org/debian/ experimental main) Odpalamy

Kod: Zaznacz cały

apt-get build-dep ekg2
.
8.

Kod: Zaznacz cały

dpkg-buildpackage -rfakeroot
9. Voila

PS: Obejrzenie pliku rules przekonało mnie, że wymienione przez Ciebie opcje dla ./configure są użyte w budowie paczki z experimentala, więc chyba nie warto opisanej wyżej pracy wykonywać.
Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post autor: darkwater »

Jeśli robisz "na własne potrzeby" to może wystarczy użyć programu checkinstall ?
czyli
./configure ze wszystkimi wymaganymi opcjami
make
i zamiast make install używasz checkinstall (jako root, no i oczywiście musi być zainstalowany).
Wadą jest to że nie podaje od jakich innych pakietów jest zależna ta paczka, więc trzeba o to zadbać samodzielnie. Ale moim zdaniem na początek wystarczy.
rryk
Posty: 50
Rejestracja: 13 stycznia 2009, 08:49

Post autor: rryk »

Niby mógłbym użyć paczki z wersji eksperymentalnej ale nazwy zależności są trochę inne i zaczynają się schody więc próbowałem sam zrobić nową paczkę ale ta cala instrukcja wywala się na ostatnim kroku i wyświetla błąd:

Kod: Zaznacz cały

...
patching file plugins/gg/commands.c
Hunk #1 FAILED at 117.
Hunk #2 FAILED at 185.
2 out of 2 hunks FAILED -- rejects in file plugins/gg/commands.c
Patch fixes/gg-keep-reason.diff does not apply (enforce with -f)
make: *** [debian/stamp-patched] Błąd 1
dpkg-buildpackage: błąd: debian/rules build zwrócił status błędu 2
Jakieś pomysły jak to naprawić?
ODPOWIEDZ