Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Postanowiłem w końcu ogarnąć wszystkie te pakiety, których używam ale nie ma ich standardowo w repo debiana i do tego celu wykorzystuje ten debianowy system budowy pakietów, czyli pobranie źródeł ze strony projektu, następnie generowanie katalogu debbian przy pomocy np.
dh_make -e morfikov[at]gmail.com -l -p libsodium4 -f ../libsodium-0.4.5.tar.gz
Potem sprawdzenie zależności potrzebnych do zbudowania pakietu na podstawie skryptu configure:
dpkg-depcheck -d ./configure
To wyrzuca taki log w skrócie:
Packages needed: libglib2.0-0:amd64 libmagic1:amd64 perl-modules pkg-config ccache mawk cpio colorgcc file mime-support libpopt0:amd64
I do każdego liba w tym logu dać dpkg -S czyli to by było w tym przypadku:
# dpkg -S libglib2.0-0 libpopt0 libmagic1 libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/AUTHORS libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/changelog.gz libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/ChangeLog.pre-1-2.gz libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/NEWS.pre-1-3.gz libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/ChangeLog.pre-2-0.gz libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/copyright libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/ChangeLog.pre-2-2.gz libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0 libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/changelog.Debian.gz libglib2.0-0:amd64: /usr/share/lintian/overrides/libglib2.0-0 libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/NEWS.gz libglib2.0-0:amd64: /usr/share/doc/libglib2.0-0/README.gz libpopt0:amd64: /usr/share/doc/libpopt0/changelog.Debian.gz libpopt0:amd64: /usr/share/doc/libpopt0 libpopt0:amd64: /usr/share/doc/libpopt0/changelog.gz libpopt0:amd64: /usr/share/doc/libpopt0/README libpopt0:amd64: /usr/share/doc/libpopt0/copyright libmagic1:amd64: /usr/share/bug/libmagic1/presubj libmagic1:amd64: /usr/share/doc/libmagic1/changelog.Debian.gz libmagic1:amd64: /usr/share/bug/libmagic1 libmagic1:amd64: /usr/share/doc/libmagic1/copyright libmagic1:amd64: /usr/share/doc/libmagic1/changelog.gz libmagic1:amd64: /usr/share/bug/libmagic1/control libmagic1:amd64: /usr/share/doc/libmagic1
I dodać -dev na końcu, po czym uzupełnić plik debian/control do takiej postaci:
Build-Depends: debhelper (>= 8.8.8), libglib2.0-dev, libpopt-dev, libmagic-dev
Pytanie pierwsze się nasuwa już tutaj, bo w repo debiana nie ma pakietów libglib2.0-0-dev, libpopt0-dev, libmagic1-dev , są tylko takie jak uzupełnione w build-depends. Czy zawsze tak się dzieje z tymi zależnościami, że trzeba odpowiednio te numerki dostosować?
Druga kwestia dotyczy pakietów jakich wymaga budowana paczka przy instalacji. Przykładowo: testuje sobie simplescreenrecorder, który nawet ciekawe się zapowiada i chciałbym z tego zrobić sobie paczuszkę i tak na pierwszy ogień wziąłem analizę paczki ubuntowej i podejrzałem co ona ma tam w katalogu debian/control :
Depends: libasound2 (>= 1.0.16), libavcodec53 (>= 0.8.3-1~) | libavcodec-extra-53 (>= 0.8.7), libavformat53 (>= 0.8.3-1~) | libavformat-extra-53 (>= 0.8.7), libavutil51 (>= 0.8.3-1~) | libavutil-extra-51 (>= 0.8.7), libc6 (>= 2.14), libgcc1 (>= 4.1.1), libpulse0 (>= 0.99.1), libqtcore4 (>= 4.7.0~beta1), libqtgui4 (>= 4.6.1), libstdc++6 (>= 4.7), libswscale2 (>= 0.8.3-1~) | libswscale-extra-2 (>= 0.8.7), libx11-6, libxext6, libxfixes3
I jak to wywnioskować przy budowaniu paczki?
Ostatnio edytowany przez morfik (2013-11-25 17:09:25)
Offline
A nie prościej dać
aptitude build-dep nazwa pakietu który chcemy kompilować
aptitude lub apt-get
Offline
No tylko tego pakietu nie ma w debianie, i dlatego paczkę pierw trzeba zrobić i dopiero jak masz paczkę, to możesz ją przebudowywać i ciągnąć zależności przy pomocy build-dep . A pytanie jest, jak te zależności ustalić na początku.
Offline
Jak potrzebuje tego:
Packages needed: libglib2.0-0:amd64 libmagic1:amd64 perl-modules pkg-config ccache mawk cpio colorgcc file mime-support libpopt0:amd64
to trzeba ci: debhelper libglib2.0-dev libmagic-dev perl-modules pkg-config ccache libpopt-dev
i buduj na chroot za pomocą pbuilder.
Offline
Ciekawe narzędzie, obadam je sobie, tylko muszę przebić się przez:
http://www.netfort.gr.jp/~dancer/software/pbuilder- … lder-doc.html
https://wiki.ubuntu.com/PbuilderHowto
http://manpages.ubuntu.com/manpages/lucid/man8/pbuilder.8.html
Offline
Ogarnąłem to mniej więcej, choć jeszcze nie doczytałem do końca ale 4 paczki się zbudowały, jedna miała problemy -- ten libsodium, bo wyrzuciło:
dh: unable to load addon autoreconf: Can't locate Debian/Debhelper/Sequence/autoreconf.pm in @INC (you may need to install the Debian::Debhelper::Sequence::autoreconf module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.1 /usr/local/share/perl/5.18.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at (eval 29) line 2. BEGIN failed--compilation aborted at (eval 29) line 2.
Dodałem mu w zależnościach dh-autoreconf i przeszło na czystym chroot, nie trzeba było nawet dodawać perl-modules . I te zależności to się w taki sposób dobiera? Jak wyrzuci błąd na czysty to trza dopisać co tam w logu wyrzuci i czekać na nasŧepny błąd i jak się pojawi to ponownie dopisać co trzeba i tyle?
Sprawdziłem jak wyszła paczka i faktycznie ona ma już w zależnościach przy instalacji odpowiednie pakiety, nic nie dodawałem, zostawiłem tylko w debian/control
Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends}
Ale w sumie to jest kilka pytań, ten pbuilder służy tylko do testowania? Całą procedurę budowania się przeprowadza przy pomocy dh_make i dpkg-buildpackage , edytując przy tym pliki w katalogu debian/ ?
I jeszcze taka sprawa jak mam jedno źródło i z niego mają wyjść dwa pakiety -- jeden program, a drugi lib to przy tworzeniu katalogu debian co wybrać, single binary, indep binary, multiple binary, library -- multi? Póki co tylko na single się buduje tyle, że struktura data.tar.gz w paczce wygląda jak poniżej:
$ tree └── usr ├── bin │ └── simplescreenrecorder ├── lib │ └── x86_64-linux-gnu │ ├── libssr-glinject.la │ └── libssr-glinject.so └── share ├── applications │ └── simplescreenrecorder.desktop ├── doc │ └── ssr │ ├── README.Debian │ ├── README.md.gz │ ├── changelog.Debian.gz │ ├── copyright │ ├── notes.txt.gz │ └── todo.txt ├── icons │ └── hicolor │ └── 256x256 │ └── apps │ └── simplescreenrecorder.png └── simplescreenrecorder └── translations ├── simplescreenrecorder_de.qm ├── simplescreenrecorder_nl.qm ├── simplescreenrecorder_pl.qm └── simplescreenrecorder_zh_CN.qm
To jest testowe póki co jeszcze, i tylko plik control zmieniałem
I jeszcze ostatnia sprawa, jak budować pakiety dla i386 i amd64 w jednym podejściu?
EDIT:
Znalazłem to jak budować 2 paczki z jednego źródła, była opcja w configure.
Ostatnio edytowany przez morfik (2013-11-26 04:14:23)
Offline