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/.
Przy pracach nad Hagiem potrzebuję zrobić kilka pakietów w bardziej profesjonalny sposób. Mam jednak przy tym kilka wątpliwości, których Podręcznik dla nowych opiekunów pakietów nie rozwiał. Jest na DUG-u kilku opiekunów, a może nawet jakiś deweloper, może ktoś mi pomoże. :)
Na początek takie pytanie: czy format daty w changelogu jest ściśle określony? Czy musi to być koniecznie np.:
Sun, 04 Nov 2007 00:12:56 +0100
czy może być standardowy format date'a, np.:
Fri Jun 20 11:05:34 CEST 2008
?
Offline
Nie jestem opiekunem ani deweloperem ;p ale z tego co wiem format daty w changelogu jest ściśle określony, tylko nie pamiętam jaki.
Offline
To ja się podłączę z prostszym pytaniem.
Mam aplikację do obsługi kamerki internetowej, wymaga ona dirac. Spakietowałem sobie dirac, ale chciałbym z niego zrobić trzy oddzielne pakiety: dirac-bin libdirac0 i libdirac-dev, dirac-doc
dirac-bin :
/usr/bin/dirac_instrumentation /usr/bin/dirac_encoder /usr/bin/UYVYtoYUV422 /usr/bin/create_dirac_testfile.pl /usr/bin/UYVYtoRGB /usr/bin/YUV420toYUV422 /usr/bin/RGBtoYUV422 /usr/bin/RGBtoBMP /usr/bin/YUV444toRGB /usr/bin/RGBtoYUV444 /usr/bin/YUV411toRGB /usr/bin/dirac_decoder /usr/bin/BMPtoRGB /usr/bin/YUV422toYUV420 /usr/bin/RGBtoUYVY /usr/bin/YUV422toRGB /usr/bin/YUV422toUYVY /usr/bin/RGBtoYUV420 /usr/bin/YUV420toRGB /usr/bin/RGBtoYUV411
libdirac0
/usr/lib/libdirac_encoder.so.0 /usr/lib/libdirac_encoder.so.0.0.0 /usr/lib/libdirac_decoder.so.0 /usr/lib/libdirac_decoder.so.0.0.0
libdirac-dev
/usr/include/dirac/libdirac_encoder /usr/include/dirac/libdirac_encoder/dirac_encoder.h /usr/include/dirac/libdirac_decoder /usr/include/dirac/libdirac_decoder/decoder_types.h /usr/include/dirac/libdirac_decoder/dirac_parser.h /usr/include/dirac/libdirac_common /usr/include/dirac/libdirac_common/common_types.h /usr/include/dirac/libdirac_common/dirac-stdint.h /usr/include/dirac/libdirac_common/dirac_inttypes.h /usr/include/dirac/libdirac_common/dirac_types.h /usr/lib/libdirac_decoder.a /usr/lib/pkgconfig /usr/lib/pkgconfig/dirac.pc /usr/lib/libdirac_decoder.la /usr/lib/libdirac_encoder.la /usr/lib/libdirac_encoder.a /usr/lib/libdirac_decoder.la
dirac-doc wsio w dokumentacji
I problem:
Nie potrafię rozdzielić dirac na te pakiety. Modyfikacja libdirac0.install nie działa. Powstają tylko puste pliki .deb libdirac0 ma tylko katalog /usr/share/.
Offline
harry666t: dzięki. Format jest taki, jak w pierwszym przykładzie. To będę musiał sobie podrasować date w skrypcie...
AgayKhan: pokaż plik rules. (Niecne podłączanie się do mojego wątku przemilczę :P)
Ostatnio edytowany przez azhag (2008-06-20 11:59:38)
Offline
opiekunem nie jestem, ale przypomne ze jest narzedzie do zarzadzania changelogiem - debchange ... moze sie przyda ...
Ostatnio edytowany przez bercik (2008-06-20 12:09:12)
Offline
Niestety nie tym razem, chcę dopiero changelog utworzyć (a z pewnych względów nie chcę tego robić za pomocą dh_make).
Ale dzięki, przyda się na przyszłość.
PS. Zanim ktoś następny napisze "wprawdzie nie jestem opiekunem/dewelopere", powiedzmy że miałem na myśli kogoś, kto się zna na budowaniu "profesjonalnych" pakietów. ;)
Offline
Dobra, już mniej więcej wiem, gdzie był błąd.
dh_make robiło takie coś w rules
binary-arch: build install dh_testdir dh_testroot dh_installchangelogs ChangeLog dh_installdocs dh_installexamples # dh_install # dh_installmenu # dh_installdebconf # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime # dh_installinit # dh_installcron # dh_installinfo dh_installman dh_link dh_strip dh_compress dh_fixperms # dh_perl # dh_python # dh_makeshlibs dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb
Po zmianie na
binary-arch: build install dh_testdir dh_testroot dh_installchangelogs ChangeLog dh_installdocs dh_installexamples dh_install # dh_installmenu # dh_installdebconf # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime # dh_installinit # dh_installcron # dh_installinfo dh_installman dh_link dh_strip dh_compress dh_fixperms # dh_perl # dh_python dh_makeshlibs dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb
działa.
Opcja instalacji była wywalona z rules, dlatego nie instalowało.
Dzięki azhag, jesteś wielki.
Przepakietowałem sobie ffmpeg z obsługo dirac i wykrywa jako zależnośc libdirac0. Super.
Ostatnio edytowany przez AgayKhan (2008-06-20 13:05:07)
Offline
azhag napisał(-a):
PS. Zanim ktoś następny napisze "wprawdzie nie jestem opiekunem/deweloperem"(...)
Czytujesz slashdota? (: tam połowa postów w dziale "your rights online" zaczyna się od "IANAL, but..." :P
Offline
Patryk -> Prezu jest opiekunem
Online
Następne pytanie tyczy się pola Replaces w pliku control. Wg wymienionego w pierwszym poście podręcznika pliki z pakietu "zastępującego" nadpiszą pliki "zastępowanego". Jasna sprawa.
Co jednak, jeśli odwrócimy kolejność instalacji? Pakiet "zastępujący" jest już zaisntalowany, do niego chcemy doinstalować "zastępowany". Czy w takim wypadku konfliktujący plik z "zastępowanego" pozostanie nie zainstalowany? Logicznie rzecz ujmując tak będzie, ale wolę się upewnić, zanim się natyram na darmo.
PS. Jeszcze takie głupie pytanie — czy można zakomentować linię w control lub innych (poza rules ;]) debianowych plikach?
—
kurcze, nic nie było jak zaczynałem pisać, a teraz nagle 3 posty :)
harry666t napisał(-a):
azhag napisał(-a):
PS. Zanim ktoś następny napisze "wprawdzie nie jestem opiekunem/deweloperem"(...)
Czytujesz slashdota? (: tam połowa postów w dziale "your rights online" zaczyna się od "IANAL, but..." :P
nie czytuję :)
co znaczy AL?
Bodzio napisał(-a):
Patryk -> Prezu jest opiekunem
wiem, ale nie chciałem zgłaszać nikogo na ochotnika ;)
AgayKhan napisał(-a):
qnapi i kadu ?
nie tylko :) (nie ma to jak prywatność :P)
Ostatnio edytowany przez azhag (2008-06-20 21:20:53)
Offline
Offline
A ja sie pochwalę, iż w debian-multimedia pojawił sie dirac, prawie identycznie spakowany jak mój. Tylko zamiast dirac-bin jest dirac.
Offline
Wcześniej nie widziałem tego wątku, dlatego nie pisałem nic.
Azhag, w changelog'u data ma być w formacie zdefiniowanym w RFC822 -- czyli takim, jaki zwraca:
$ date -R
Jeśli używasz Sida, to zainstaluj paczkę debian-policy. Jeśli testing, lub stable, to wejdź na http://debian.org/devel i tam masz Debian Policy (Zasady Polityki Debiana jak to przetłumaczono :). O formatach wszystkich plików esencjonalnych dla paczki źródłowej tam wszystko znajdziesz. Np. o formacie daty jest mowa w punkcie "4.4 Debian changelog: debian/changelog".
Co do komentarzy w debian/control, to nie wolno. Ale w debian/rules jak najbardziej -- ten plik to zwykły plik z regułami dla make'a, więc obowiązują dokładnie te same zasady co dla Makefile'i.
W pozostałych plikach, jak na przykład debian/pakiet.install, debian/pakiet.postrm itd, to zależy. Np. ten drugi (postrm/prerm/postinst itd) to zwykłe skrypty powłoki. Ale .install to już plik dla jednego z narzędzi debhelpera (w tym przypadku dh_install -- korzystanie z narzędzi debhelpera jest oczywiście opcjonalne -- można robić sobie na piechotę to co za nas robią dh_*, ale widzę w powyższych przykładach, że lubicie dh_*, ja z resztą też :). Co do formatu plików dla debhelpera, to trzeba poczytać manuale dla poszczególnych dh_whatever -- ja też nie znam ich wszystkich na pamięć i zaglądam do mana od czasu do czasu. Zwróć uwagę, że pliki .install jest plikiem dla dh_install, który jest opcjonalnym narzędziem. Nie jest to plik esencjonalny dla paczki źródłowej, dlatego jego dokumentacji szukasz nie w Debian Policy, tylko dokumentacji debhelpera (tu konkretnie dh_install(1)).
Jak by się zdarzyło pytanie do mnie, a bym nie odpowiadał (może mi umknąć post), to szturchnięcie na PMa proszę. :)
Offline
Prezu napisał(-a):
Azhag, w changelog'u data ma być w formacie zdefiniowanym w RFC822 — czyli takim, jaki zwraca:
Kod:
$ date -R
lol, a ja wyskrobałem jakiegoś potwora:
LC_ALL=en_EN date +"%a, %d %b %Y %T %z"
:D
Dzięki wielkie, cenne informacje. O zajrzeniu do Debian Policy nawet nie pomyślałem. :)
Jakbym miał jakieś pytania jeszcze, nie omieszkam Cię zmolestować przez PM. :)
Offline
Spoko. :)
Jeszcze apropos changelog'a — zainstaluj sobie pakiet devscripts. Jest tam m. in. tulik dch. Służy on do zarządzania chagnelog'iem właśnie. W katalogu ze źródłami paczki, gdy dodajesz wpis dla nowej wersji upstreamowej:
$ dch -v nowa_wersja
Lub jeśli puszczasz nową rewizję tej samej wersji:
$ dch -i
Jak widzisz, sam tworzy nowe wpisy. :) Jeśli chcesz np. tylko uaktualnić datę do ostatniego wpisu (bo ostatnią modyfikację zrobiłeś np. kilka dni temu) to
$ dch -e
To służy do edycji ostatniego wpisu, ale przy okazji "odświeża" datę.
Zmienną środowiskową EDITOR wybierasz edytor. Jeśli EDITOR nie jest ustawiony, to użyty zostanie skrypt /usr/bin/sensible-editor do wyboru edytora.
EDIT: Aha, ustaw sobie jeszcze mienną DEBEMAIL (najlepiej w .bashrc, czy co tam używasz), bo inaczej dch nie będzie wiedział jakie imię, nazwisko, email wpisać. Szczegóły w dch(1).
Ostatnio edytowany przez Prezu (2008-07-09 10:15:02)
Offline
A jak to jest z nazwami pakietów? Który z wymienionych jest nowszy: pakiet_0.1 czy pakiet_0.1-0dev1337?
Czy taki (0.1, bez sufiksu) schemat nazywania finalnych wersji pakietów przejdzie, czy muszę im nadawać wersję 0.1-1?
Edit: głupie pytanie, oczywiscie, że muszę dać 0.1-1...
Ostatnio edytowany przez azhag (2008-07-13 17:02:29)
Offline
To co jest po "-" to rewizja debianowa. Ma ona najmniejsze znaczenie w wersji paczki dla apta. Jeśli jej nie ma, to tak jak by była równa 0. Czyli 0.1 to tak na prawdę 0.1-0, a to znaczy, że 0.1 jest starsze niż 0.1-0dev1337. Można nie dać wcale rewizji debianowej, ale zalecane jest jej dodanie zaczynając zawsze od 1. Normalnie to powinny być kolejne liczby naturalne. Ale w niektórych wypadkach jest inaczej, np. NMU (Non Maintainer Upload), czy poprawki bezpieczeństwa dla stable.
Wszystkie pola wersji paczki debianowej i ich wzajemnej relacji jest w policy w punkcie 5.6.12. Warto przyjrzeć się np. znaczeniu tyldy ("~") w wersji. :) Przydaje się release candidate'ach, czy betach. Sam w Kadu wykorzystywałem.
Ostatnio edytowany przez Prezu (2008-07-14 14:39:58)
Offline
O, jak zwykle wielkie dzięki. Muszę się wreszcie wczytać w Policy. :)
PS. Tak trochę a propos wersji, ostatnio jeden z DD pokpiwał z wersji pakietów w Ubuntu:
matt@krypton:~$ dpkg -s flashplugin-nonfree | grep Version Version: 10.0.1.218+10.0.0.525ubuntu1~hardy1+really9.0.124.0ubuntu2
to jest dopiero wersja. ;)
Ostatnio edytowany przez azhag (2008-07-14 15:15:24)
Offline
hehehehe pewnie nawet opiekun tego nie ogarnia po kilku tygodniach od ostatniego uploadu... :D
Offline
Jak najłatwiej wymusić nadpisanie chronionego pliku innego pakietu (conffiles)? Pole Replaces z control wydaje się nie mieć "wystarczającej mocy".
Pewnie da się przez stosowny skrypt w postinst, ale może istnieje mniej barbarzyńska metoda.
Offline
na razie udało mi się ustalić, że powinienem się dpkg-divert zainteresować
ale jego obsłuiga jeszcze jest dla mnie tajemnicą :)
Offline
Osobiście tego nie przerobiłem. :] Mogę tylko się domyślać. Anyway, jeśli jeszcze nie rozwiązałeś tego problemu to zagadaj do mnie na jabbera.
Offline
Już to przerobiłem — problem leżał w tym miejscu, że ów plik już raz był dywersyfikowany, kolejna próba dywersyfikacji wywalała błąd.
Kombinowałem z napisaniem reguły dla dpkg-divert, która najpierw usuwa starą dywersyfikację i dopiero tworzy nową, ale dałem za wygraną po nastej próbie.
Ostatecznie uznałem, że patchowanie felernego pakietu będzie prostszym rozwiązaniem. :)
Ostatnio edytowany przez azhag (2008-08-19 16:14:34)
Offline
Zna ktoś jakiś dokument dotyczący alternatyw w Debianie? update-alternatives(8) nie w pełni mnie usatysfakcjonował. W Debian Policy, Debian Reference, Debian Developer's Reference i Debian New Maintainers' Guide właściwie nic nie znalazłem.
Najbardziej interesuje mnie zasada nadawania priorytetów. Ich zakres, metodologia nadawania, znaczenie (co np. znaczy ujemny priorytet?). Innymi informacjami też bym nie pogardził :)
Offline