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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2008-07-03 19:27:59

  daris - Użytkownik

daris
Użytkownik
Zarejestrowany: 2007-12-26

Budowanie pakietów

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ą

Kod:

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

 

#2  2008-07-03 19:32:12

  AgayKhan - Członek DUG

AgayKhan
Członek DUG
Skąd: Płock
Zarejestrowany: 2006-03-21
Serwis

Re: Budowanie pakietów


born to be root
linux register user #362473

Offline

 

#3  2008-07-03 19:46:48

  daris - Użytkownik

daris
Użytkownik
Zarejestrowany: 2007-12-26

Re: Budowanie pakietów

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

 

#4  2008-07-03 20:28:34

  ilin - Palacz

ilin
Palacz
Skąd: PRLu
Zarejestrowany: 2006-05-03

Re: Budowanie pakietów

Co tam tyle do edytowania.
Jak robisz na własne potrzeby to nie musisz tych zależnosci i innych rzeczy wpisywac.

Kod:

 dh_make -e twoj@adres.e-mail -f ../program-wersja.tar.gz

Kod:

dpkg-buildpackage -rfakeroot

Jak sie nie chce zbudowac (ostatnio mialem taką sytuację z xmmmesem)

Kod:

fakeroot debian/rules binary

To najpewniejsze sposoby.
Checkinstall czym nowszy to się bardziej sypie.


Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Polski portal Debiana

Offline

 

#5  2008-07-03 21:18:31

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Budowanie pakietów

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:

Kod:

#!/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ę:

Kod:

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.

Kod:

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)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#6  2008-07-14 21:26:59

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: Budowanie pakietów

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

 

#7  2008-07-14 21:56:21

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Budowanie pakietów

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. :>


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#8  2008-07-14 22:45:55

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: Budowanie pakietów

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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)