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

http://www.dug.net.pl/faq/faq-6-183-Budowanie_prostego_pakietu_ze_zródelka.php


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.


[b]Problemy rozwiązujemy na forum nie na PW[/b] -> Niech inni na tym skorzystają.
[url=http://dug.net.pl/]Polski portal Debiana[/url]

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 [b]specyficznych[/b], niekompilowanych pakietów (dla takich [tt]dh_make[/tt] się dobrze sprawuje), które mają dość osobliwy [tt]rules[/tt] (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 [tt]_debian-template/[/tt] z szablonami plików katalogu [tt]debian/[/tt].
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 [tt]nazwa-pakietu/nazwa-pakietu-wersja/[/tt] utworzyć stosowne pliki i katalogi (mogą być dowolne, niekoniecznie takie jak docelowe), po czym dopisać je w [tt]rules[/tt], 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 [tt]nazwa-pakietu/nazwa-pakietu-wersja/[/tt] budujemy przez [tt]dpkg-buildpackage -rfakeroot --inne-opcje[/tt].

[quote=daris]Ogólnie to poszukuje jakiegoś dobrego poradnika na temat budowania deb'ów[/quote]
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.
[url=http://www.opencaching.pl]opencaching[/url] :: [url=http://dug.net.pl/sources.list]debian sources.list[/url] :: [url=http://www.linuxportal.pl/blogi/azhag/wpisy]coś jakby blog[/url] :: [url=http://dug.net.pl/]polski portal debiana[/url] :: linux user #403712

Offline

 

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

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Brno, Česko
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ę :) .
[quote=azhag]

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

[/quote]
Czy, w przypadku odpowiedzi negatywnej, nie rozsądniej byłoby dać użytkownikowi szansę na poprawienie źle wypełnionego pola?


Spinnen Essen: [url=http://fluxboxpl.org/portal/]FluxboxPL[/url] [url=http://przepis-na-lo.pl/]Przepis na LibreOffice[/url]

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.
[url=http://www.opencaching.pl]opencaching[/url] :: [url=http://dug.net.pl/sources.list]debian sources.list[/url] :: [url=http://www.linuxportal.pl/blogi/azhag/wpisy]coś jakby blog[/url] :: [url=http://dug.net.pl/]polski portal debiana[/url] :: linux user #403712

Offline

 

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

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Brno, Česko
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 :) .


Spinnen Essen: [url=http://fluxboxpl.org/portal/]FluxboxPL[/url] [url=http://przepis-na-lo.pl/]Przepis na LibreOffice[/url]

Offline

 

Stopka forum

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

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00012 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00117 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.12.151.242' WHERE u.id=1
0.00082 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.12.151.242', 1714082846)
0.00088 SELECT * FROM punbb_online WHERE logged<1714082546
0.00053 SELECT topic_id FROM punbb_posts WHERE id=94598
0.00065 SELECT id FROM punbb_posts WHERE topic_id=11787 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=11787 AND t.moved_to IS NULL
0.00007 SELECT search_for, replace_with FROM punbb_censoring
0.00095 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=11787 ORDER BY p.id LIMIT 0,25
0.00112 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=11787
Total query time: 0.00698 s