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: [deb]debhelper[/deb] [deb]libglib2.0-dev[/deb] [deb]libmagic-dev[/deb] [deb]perl-modules[/deb] [deb]pkg-config[/deb] [deb]ccache[/deb] [deb]libpopt-dev[/deb]
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-doc/pbuilder-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
Time (s) | Query |
---|---|
0.00011 | SET CHARSET latin2 |
0.00005 | SET NAMES latin2 |
0.00108 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.145.61.199' WHERE u.id=1 |
0.00063 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.145.61.199', 1732586654) |
0.00053 | SELECT * FROM punbb_online WHERE logged<1732586354 |
0.00041 | SELECT topic_id FROM punbb_posts WHERE id=246759 |
0.00057 | SELECT id FROM punbb_posts WHERE topic_id=24687 ORDER BY posted |
0.00062 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=24687 AND t.moved_to IS NULL |
0.00008 | SELECT search_for, replace_with FROM punbb_censoring |
0.00088 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=24687 ORDER BY p.id LIMIT 0,25 |
0.00087 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24687 |
Total query time: 0.00583 s |