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/.
Użytkownik

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



Członek DUG
Offline
Użytkownik

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







Palacz








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






Admin łajza







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




Użyszkodnik
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






Admin łajza







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




Użyszkodnik
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