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/.
Czy jest jakieś narzędzie pozwalające w łatwy sposób wygenerować potrzebne pliki do zbudowania pakietu takie jak np. debian/control? Nie chce mi się za każdym razem szukać jakiegoś przykładu na googlach i później odpowiednio go modyfikować. Chodzi mi o coś w rodzaju checkinstall, tyle że "bardziej profesjonalne" ;]
Ogólnie to poszukuje jakiegoś dobrego poradnika na temat budowania deb'ów
Kiedyś pamiętam, że budowałem pakiety za pomocą
dpkg -b
ale z tego co mi się wydaje to właśnie tam trzeba było samodzielnie wszystkie pliki tworzyć.
Ostatnio edytowany przez daris (2008-07-03 19:30:05)
Offline
Offline
Czytałem już podobny poradnik, ale mi nie chodziło o to.
Chodzi mi o taką rzecz: kompiluję program, instaluję do jakiegoś katalogu i z tego katalogu tworzę paczkę. Pamiętam, że kiedyś właśnie coś takiego robiłem. Ale nie chce mi się za każdym razem edytować pliku control i dlatego poszukuję czegoś takiego jak jest na przykład w checkinstall'u (można łatwo wszystko edytować)
Offline
Co tam tyle do edytowania.
Jak robisz na własne potrzeby to nie musisz tych zależnosci i innych rzeczy wpisywac.
dh_make -e twoj@adres.e-mail -f ../program-wersja.tar.gz
dpkg-buildpackage -rfakeroot
Jak sie nie chce zbudowac (ostatnio mialem taką sytuację z xmmmesem)
fakeroot debian/rules binary
To najpewniejsze sposoby.
Checkinstall czym nowszy to się bardziej sypie.
Offline
To ja podam mój skrypt do tworzenia środowiska do budowania (jak ja to nazywam) "pakietów plikowych" (tj. pakietów nie tworzonych z kompilowanych programów, a np. ze skryptów czy konfigów).
Zaznaczam, że skrypt jest dla specyficznych, niekompilowanych pakietów (dla takich dh_make się dobrze sprawuje), które mają dość osobliwy rules (nadto ja będę miał takich pakietów do zbudowania krocie).
Może kogoś zainspiruje do napisania czegoś podobnego, dla innych celów, a moze komuś przyda się właśnie do takich.
Skrypt wygląda tak:
#!/bin/sh # Skrypt do tworzenia środowiska do budowania # pakietów zawierających wyłącznie pliki. # Napisany na potrzeby Hag GNU/Linux. # azhag <azhag@fluxboxpl.org> DEFPACKAGENAME=$1 DEFPACKAGEVERSION='0.1' DEFTWORCA='Pawel Sadkowski' DEFEMAIL='azhag@fluxboxpl.org' DEFDOWNLOADEDFROM='http://hag-linux.eu.org' DEFCORRECT='n' DATA=$(LC_ALL=en_EN date +"%a, %d %b %Y %T %z") TEMPLATEDIR="./_debian-template" read -p "Podaj nazwę pakietu [$DEFPACKAGENAME]: " PACKAGENAME if [ -z "$PACKAGENAME" ]; then PACKAGENAME=$DEFPACKAGENAME fi read -p "Podaj wersję pakietu [$DEFPACKAGEVERSION]: " PACKAGEVERSION if [ -z "$PACKAGEVERSION" ]; then PACKAGEVERSION=$DEFPACKAGEVERSION fi read -p "Podaj imię i nazwisko twórcy [$DEFTWORCA]: " TWORCA if [ -z "$TWORCA" ]; then TWORCA=$DEFTWORCA fi read -p "Podaj adres e-mail twórcy [$DEFEMAIL]: " EMAIL if [ -z "$EMAIL" ]; then EMAIL=$DEFEMAIL fi read -p "Podaj stronę, z której został pobrany [$DEFDOWNLOADEDFROM]: " DOWNLOADEDFROM if [ -z "$DOWNLOADEDFROM" ]; then DOWNLOADEDFROM=$DEFDOWNLOADEDFROM fi DEFHOMEPAGE="$DOWNLOADEDFROM/pkgs/$PACKAGENAME" read -p "Podaj stronę domową [$DEFHOMEPAGE]: " HOMEPAGE if [ -z "$HOMEPAGE" ]; then HOMEPAGE=$DEFHOMEPAGE fi read -p " Dane pakietu: * nazwa: $PACKAGENAME * wersja: $PACKAGEVERSION * twórca: $TWORCA * e-mail twórcy: $EMAIL * strona, z której został pobrany: $DOWNLOADEDFROM * strona domowa: $HOMEPAGE Czy są one poprawne? [t/N] " CORRECT if [ -z "$CORRECT" ]; then CORRECT=$DEFCORRECT fi if [ "$CORRECT" = t ] || [ "$CORRECT" = T ]; then continue else exit 1; fi # niech stanie się środowisko PACKAGEDIR="$PACKAGENAME/$PACKAGENAME-$PACKAGEVERSION" DOWNLOADEDFROM2=$(echo $DOWNLOADEDFROM | sed 's:/:\\/:g') HOMEPAGE2=$(echo $HOMEPAGE | sed 's:/:\\/:g') mkdir -p $PACKAGEDIR/debian/ mkdir -p $PACKAGEDIR/tmp/ FILES=(changelog compat control copyright docs rules) for FILE in "${FILES[@]}"; do sed "s/PACKAGENAME/$PACKAGENAME/g;\ s/TWORCA/$TWORCA/g;\ s/PACKAGEVERSION/$PACKAGEVERSION/g;\ s/EMAIL/$EMAIL/g;\ s/DOWNLOADEDFROM/$DOWNLOADEDFROM2/g;\ s/HOMEPAGE/$HOMEPAGE2/g;\ s/DATA/$DATA/g"\ $TEMPLATEDIR/$FILE > $PACKAGEDIR/tmp/$FILE if [ $FILE != rules ]; then install -m 664 $PACKAGEDIR/tmp/$FILE $PACKAGEDIR/debian/$FILE else install -m 775 $PACKAGEDIR/tmp/$FILE $PACKAGEDIR/debian/$FILE fi done rm -rf $PACKAGEDIR/tmp/ echo "" echo "Wychodzi na to, że zrobione. :)"
(oczywiście możecie zmienić domyślne wartości)
oprócz skryptu jest katalog _debian-template/ z szablonami plików katalogu debian/.
Całość można pobrać z http://azhag.fluxboxpl.org/duperele/makenewpkgenv.tar.gz
Po uruchomieniu skrypt odpytuje o kilka informacji dotyczących pakietu (nazwę pakietu można podać jako argument, przybierze on wtedy wartość domyślną). Po zaakceptowaniu danych utworzy strukturę:
nazwa-pakietu/ nazwa-pakietu/nazwa-pakietu-wersja/ nazwa-pakietu/nazwa-pakietu-wersja/debian/ nazwa-pakietu/nazwa-pakietu-wersja/debian/(changelog|control|etc.)
wystarczy uzupełnić changelog, control, wyedytować copyright, w nazwa-pakietu/nazwa-pakietu-wersja/ utworzyć stosowne pliki i katalogi (mogą być dowolne, niekoniecznie takie jak docelowe), po czym dopisać je w rules, np.
dh_installdirs usr/share/katalog/na/plik usr/share/drugi/katalog/na/resztę #katalogi, które są wymagane install -m 644 $(CURDIR)/katalog1/plik usr/share/katalog/na/plik/plik #instalujemy pliki install -m 644 $(CURDIR)/katalog2/* usr/share/drugi/katalog/na/resztę/
ew. symlinki w linijce dh_link
po czym w nazwa-pakietu/nazwa-pakietu-wersja/ budujemy przez dpkg-buildpackage -rfakeroot --inne-opcje.
daris napisał(-a):
Ogólnie to poszukuje jakiegoś dobrego poradnika na temat budowania deb'ów
Lepszego ze świecą szukać:
http://www.debian.org/doc/devel-manuals#maint-guide
Ostatnio edytowany przez azhag (2008-07-03 23:07:09)
Offline
Sorry za archeologię, ale trochę mnie nie było ;) . A bez komentarza tego zostawić nie mogę :) .
azhag napisał(-a):
Kod:
#!/bin/sh # Tutaj wycięta znaczna część kodu read -p " Dane pakietu: * nazwa: $PACKAGENAME * wersja: $PACKAGEVERSION * twórca: $TWORCA * e-mail twórcy: $EMAIL * strona, z której został pobrany: $DOWNLOADEDFROM * strona domowa: $HOMEPAGE Czy są one poprawne? [t/N] " CORRECT if [ -z "$CORRECT" ]; then CORRECT=$DEFCORRECT fi if [ "$CORRECT" = t ] || [ "$CORRECT" = T ]; then continue else exit 1; fi # Jak wyżej
Czy, w przypadku odpowiedzi negatywnej, nie rozsądniej byłoby dać użytkownikowi szansę na poprawienie źle wypełnionego pola?
Offline
Pewnie byłoby, ale tak była łatwiej. Poza tym skrypt był pisany z myślą o użytkowniku doskonałym, który błędów nie popełnia. :>
Offline
Jasne, też wiem jak się pisze skrypty dla siebie. Ale jednak jak chce się takie rzeczy publikować, powinno się brać pod uwagę że użytkownikowi daleko do doskonałości. A w najgorszym przypadku mieć chociaż świadomość, że programowi brakuje takich-a-takich funkcji ;) (nie to żebym sugerował że jej nie masz).
Po prostu nie mogłem zostawić tego bez komentarza :) .
Offline