Chcę ręcznie utworzyć plik DEB. Chciałbym tylko udostępnić folder zawierający dane do zainstalowania oraz skrypt, który zostanie wykonany po instalacji.
@David, właściwie zrobiłem to z „dpkg-deb”, jest to o wiele łatwiejsze, dlatego wybrałem Gilles, wymieniając pliki w folderze pakietu, daje mi wyraźny widok pliku do umieszczenia tam. Więc myślę, że jego odpowiedź jest lepsza ..
stokrotka
Wymieniam też wszystkie pliki w pakiecie.
Gigamegs,
11
@ David Mam na myśli, że twierdzenie, że jego odpowiedź jest pochodna, to jedno, ale „niezbyt dobra odpowiedź”? Odpowiedź Gillesa jest doskonała; nie ma znaczenia, czy twoja odpowiedź była pierwsza, jego odpowiedź jest znacznie bardziej kompletna. I nie ma nic złego w przyjmowaniu istniejącej odpowiedzi i rozszerzaniu jej; to dobrze
Michael Mrozek
Odpowiedzi:
57
Tworzenie pakietu źródłowego
Radzę zrobić pakiet źródłowy. Zainstaluj niezbędne do budowania , debhelper , dh-make . Przejdź do katalogu, w którym znajdują się pliki, które chcesz zainstalować (nazwa katalogu musi mieć formę $PACKAGE-$VERSION, np. Przy myapp-4.2-1pierwszej próbie pakowania Myapp V4.2), i uruchom dh_make --createorig. Odpowiedz na pytania. Debhelper stworzy podstawową infrastrukturę potrzebną do zbudowania pakietu, generując pliki w podkatalogu o nazwie debian, zarówno niektóre pliki obowiązkowe, jak i szablony dla plików opcjonalnych. Konieczne może być zmodyfikowanie niektórych z tych plików:
Edytuj, debian/rulesaby skompilować to, co wymaga zbudowania, i zainstaluj pliki we właściwym miejscu. Jeśli po prostu chcesz skopiować niektóre pliki, a nie kompilować, po prostu edytuj plik, debian/installaby określić, które pliki należy zainstalować gdzie.
Edytuj, debian/copyrightaby dodać informacje o licencji dotyczące pakietu i informacje o tym, gdzie uzyskać najnowszą wersję (jeśli dotyczy).
Edytuj, debian/changelogaby usunąć odniesienie do ITP (dotyczy to tylko projektu Debian). Zmień nazwę debian/postinst.ex, aby debian/postinstdodać swoje polecenia po instalacji tam. Jeśli później zaktualizujesz pakiet, uruchom, debchange -iaby dodać pozycję dziennika zmian lub edytuj plik w Emacsie (z zainstalowanym programem dpkg-dev-el ).
Uruchom, dpkg-buildpackage -rfakeroot -us -ucaby skompilować .debpakiet (usuń, -us -ucjeśli chcesz podpisać pakiet za pomocą klucza PGP).
Upewnij się, że Twój pakiet instaluje oczekiwane pliki /usr/share/doc/copyright(zawierające licencję zawartości pakietu, a także gdzie znaleźć najnowszą wersję pakietu) i /usr/share/doc/changelog.Debian.gz(zawierający dziennik zmian pakietu deb). Nie potrzebujesz ich, jeśli zamierzasz korzystać z pakietu samodzielnie, ale lepiej je mieć.
O Debianie i pochodnych
Jeśli masz dostępne narzędzia Debian, użyj dpkg-debdo zbudowania pakietu. W katalogu zawierającym dane do zainstalowania dodaj katalog wywoływany DEBIANna najwyższym poziomie, zawierający pliki sterujące i skrypty opiekuna.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Trudna droga
Jeśli nie masz narzędzi Debiana, zbuduj archiwum plików, które chcesz spakować data.tar.gz, osobne archiwum plików kontrolnych o nazwie control.tar.gz(bez podkatalogów) oraz plik tekstowy o nazwie debian-binaryi zawierający tekst 2.0.
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
Trzeba przynajmniej plik kontrolny z pól Package, Maintainer, Priority, Architecture, Installed-Size, Version, oraz wszelkie niezbędne oświadczenia zależność.
Wywoływany jest skrypt do wykonania po instalacji postinst. Upewnij się, że jest wykonywalny. To idzie w parze control.
Konwertowanie pakietu binarnego z innego formatu
Jeśli masz już pakiet binarny z innej dystrybucji, możesz użyć programu Alien do jego konwersji.
Odpowiedź zakłada, że OP wie, jak używać emacsa. Czy emacs jest tu naprawdę potrzebny? Myślę, że do edycji dzienników zmian można użyć dch -i.
Faheem Mitha
Co to arrobi, tarprawda?
mmstick
@mmstick To inny format. Nie wiem, dlaczego projektanci formatu deb zdecydowali się na użycie ar tutaj.
Gilles „SO- przestań być zły”
1
Jeśli chcesz zmienić nazwę i e-mail, dh_make --createorigzastosowania, trzeba export DEBEMAIL="[email protected]"i export DEBFULLNAME="Firstname Lastname"wcześniej.
Ryan
10
Najpierw musisz utworzyć folder kompilacji i archiwum swoich plików: tar czvf data.tar.gz files
Następnie w folderze kompilacji musisz utworzyć plik kontrolny z kilkoma poszukiwanymi informacjami:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <[email protected]>
Description: This is optional, but creates warnings if left out
Następnie możesz dodać niezależne skrypty powłoki preinst, postint, prerm i postrm, aby kontrolować zachowanie przed i po instalacji oraz przed i po usunięciu pliku .deb, a następnie możesz utworzyć archiwum sterowania za pomocą tar: tar czvf control.tar.gz control preinst postinst prerm postrm
Następnie trzeba plik debian-binarny: echo 2.0 > debian-binary. W folderze kompilacji powinieneś teraz mieć te pliki: debian-binarycontrol.tar.gzi data.tar.gz.
Wreszcie potrzebujesz arpakietu, aby utworzyć plik .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
O ar -r xxx.deb debian-binary control.tar.gz data.tar.gzto może być warto podkreślić kolejność jest ważne: kontrola musi przyjść przed danymi.
Hibou57
@Bytemain, najczęściej głosowana odpowiedź wygląda rzeczywiście częściowo na podstawie tekstu, ale dodaje do niej szczegóły i jest lepiej czytelna. sekwencja, którą możemy skopiować / wkleić, czyni ją szczególnie przystojną.
mariotomo
3
Robię dużo paczek i zrobienie pełnego nie jest trywialną sprawą. Pozytywnie, pliki i skrypty są znacznie mniej pracy. Możesz stworzyć taki pakiet, bardzo prosto, za pomocą narzędzia znanego jako debreate .
Debreate to naprawdę prosty GUI, do tworzenia prostych pakietów DEB. Możesz po prostu określić, które pliki, gdzie się znajdują i czy / co powinno zostać wykonane po / preinstalacji / odinstalowaniu. Kiedyś robiłem wszystkie moje pakiety w standardowy sposób, ale kiedy zacząłem używać tego narzędzia, wrócę tylko wtedy, gdy będzie to konieczne.
Wpadłem na to z Zimbra 7 na Debianie, używając jego pakietów Ubuntu. (Jestem uparty, lubię Debiana> bUbuntu pomimo wydania Zimbry tylko dla Ubuntu.) Nie jestem pewien, jak wcześniej to obejrzałem, jestem pewien, że nie musiałem tego robić, kiedy instalowałem to wcześniej!
mkdir new
for i in *.deb
do echo `date`: working on $i
ar x $i
cd control
rm * 2> /dev/null
tar -xzpvf ../control.tar.gz
tr "_" "-" < control > control2
mv -v control2 control
tar -czpvf ../control.tar.gz .
cd ..
ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control
Wszystkie nowe pliki .deb będą w new/.
Uwaga : to było na squeeze - dpkg na wheezy ma teraz --force-bad-wersję.
To brzmi jak świetna opcja do śledzenia pakietów, które musisz zainstalować ze źródła. Czy możesz podać więcej szczegółów? Np. W trakcie instalacji możesz zmieniać dowiązania symboliczne, usuwać pliki, edytować pliki konfiguracyjne, dodawać demony itp. ... w jakim stopniu sprawdzani są użytkownicy, którzy śledzą instalację i cofają te zmiany? Czy możesz łatwo zmodyfikować dane wyjściowe, aby dodać skrypty prerm i postrm?
AatG
zajrzyj na wiki.debian.org/CheckInstall Jeśli chcesz zmienić rzeczy podczas instalacji - najprościej jest zmodyfikować Makefile, aby zmienić sekcję instalacji. prerm / postrm - nie znalazłem sposobu na jego modyfikację. Tylko małe programy umożliwiają prostą odinstalowanie.
Odpowiedzi:
Tworzenie pakietu źródłowego
Radzę zrobić pakiet źródłowy. Zainstaluj niezbędne do budowania , debhelper , dh-make . Przejdź do katalogu, w którym znajdują się pliki, które chcesz zainstalować (nazwa katalogu musi mieć formę
$PACKAGE-$VERSION
, np. Przymyapp-4.2-1
pierwszej próbie pakowania Myapp V4.2), i uruchomdh_make --createorig
. Odpowiedz na pytania. Debhelper stworzy podstawową infrastrukturę potrzebną do zbudowania pakietu, generując pliki w podkatalogu o nazwiedebian
, zarówno niektóre pliki obowiązkowe, jak i szablony dla plików opcjonalnych. Konieczne może być zmodyfikowanie niektórych z tych plików:debian/rules
aby skompilować to, co wymaga zbudowania, i zainstaluj pliki we właściwym miejscu. Jeśli po prostu chcesz skopiować niektóre pliki, a nie kompilować, po prostu edytuj plik,debian/install
aby określić, które pliki należy zainstalować gdzie.debian/copyright
aby dodać informacje o licencji dotyczące pakietu i informacje o tym, gdzie uzyskać najnowszą wersję (jeśli dotyczy).debian/changelog
aby usunąć odniesienie do ITP (dotyczy to tylko projektu Debian). Zmień nazwędebian/postinst.ex
, abydebian/postinst
dodać swoje polecenia po instalacji tam. Jeśli później zaktualizujesz pakiet, uruchom,debchange -i
aby dodać pozycję dziennika zmian lub edytuj plik w Emacsie (z zainstalowanym programem dpkg-dev-el ).Uruchom,
dpkg-buildpackage -rfakeroot -us -uc
aby skompilować.deb
pakiet (usuń,-us -uc
jeśli chcesz podpisać pakiet za pomocą klucza PGP).Bezpośrednie tworzenie pakietu binarnego
Jeśli zdecydujesz się stworzyć pakiet binarny bezpośrednio bez budowania go z pakietu źródłowego, co nie jest tak naprawdę łatwiejsze, ponieważ nie ma tylu narzędzi ułatwiających proces, będziesz potrzebować podstawowej znajomości formatu pakietów deb. Jest to opisane w Podręczniku Polityki Debiana , w szczególności rozdz. 3 (format pakietów binarnych) , rozdz. 5 (pliki kontrolne) , rozdz. 6 (skrypty instalacyjne) i dodatek B (manipulowanie pakietami binarnymi) .
Upewnij się, że Twój pakiet instaluje oczekiwane pliki
/usr/share/doc/copyright
(zawierające licencję zawartości pakietu, a także gdzie znaleźć najnowszą wersję pakietu) i/usr/share/doc/changelog.Debian.gz
(zawierający dziennik zmian pakietu deb). Nie potrzebujesz ich, jeśli zamierzasz korzystać z pakietu samodzielnie, ale lepiej je mieć.O Debianie i pochodnych
Jeśli masz dostępne narzędzia Debian, użyj
dpkg-deb
do zbudowania pakietu. W katalogu zawierającym dane do zainstalowania dodaj katalog wywoływanyDEBIAN
na najwyższym poziomie, zawierający pliki sterujące i skrypty opiekuna.Trudna droga
Jeśli nie masz narzędzi Debiana, zbuduj archiwum plików, które chcesz spakować
data.tar.gz
, osobne archiwum plików kontrolnych o nazwiecontrol.tar.gz
(bez podkatalogów) oraz plik tekstowy o nazwiedebian-binary
i zawierający tekst2.0
.Trzeba przynajmniej plik kontrolny z pól
Package
,Maintainer
,Priority
,Architecture
,Installed-Size
,Version
, oraz wszelkie niezbędne oświadczenia zależność.Wywoływany jest skrypt do wykonania po instalacji
postinst
. Upewnij się, że jest wykonywalny. To idzie w parzecontrol
.Konwertowanie pakietu binarnego z innego formatu
Jeśli masz już pakiet binarny z innej dystrybucji, możesz użyć programu Alien do jego konwersji.
źródło
dch -i
.ar
robi,tar
prawda?dh_make --createorig
zastosowania, trzebaexport DEBEMAIL="[email protected]"
iexport DEBFULLNAME="Firstname Lastname"
wcześniej.Najpierw musisz utworzyć folder kompilacji i archiwum swoich plików:
tar czvf data.tar.gz files
Następnie w folderze kompilacji musisz utworzyć plik kontrolny z kilkoma poszukiwanymi informacjami:
Następnie możesz dodać niezależne skrypty powłoki preinst, postint, prerm i postrm, aby kontrolować zachowanie przed i po instalacji oraz przed i po usunięciu pliku .deb, a następnie możesz utworzyć archiwum sterowania za pomocą tar:
tar czvf control.tar.gz control preinst postinst prerm postrm
Następnie trzeba plik debian-binarny:
echo 2.0 > debian-binary
. W folderze kompilacji powinieneś teraz mieć te pliki:debian-binary
control.tar.gz
idata.tar.gz
.Wreszcie potrzebujesz
ar
pakietu, aby utworzyć plik .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
źródło
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
to może być warto podkreślić kolejność jest ważne: kontrola musi przyjść przed danymi.Robię dużo paczek i zrobienie pełnego nie jest trywialną sprawą. Pozytywnie, pliki i skrypty są znacznie mniej pracy. Możesz stworzyć taki pakiet, bardzo prosto, za pomocą narzędzia znanego jako debreate .
Debreate to naprawdę prosty GUI, do tworzenia prostych pakietów DEB. Możesz po prostu określić, które pliki, gdzie się znajdują i czy / co powinno zostać wykonane po / preinstalacji / odinstalowaniu. Kiedyś robiłem wszystkie moje pakiety w standardowy sposób, ale kiedy zacząłem używać tego narzędzia, wrócę tylko wtedy, gdy będzie to konieczne.
źródło
Zobacz Wiki Debiana na temat pakowania , być może
equivs
(patrz link) już spełnia twoje wymagania.Strona Wikipedii w
deb
formacie pliku zawiera również wiele przydatnych linków.źródło
Wpadłem na to z Zimbra 7 na Debianie, używając jego pakietów Ubuntu. (Jestem uparty, lubię Debiana> bUbuntu pomimo wydania Zimbry tylko dla Ubuntu.) Nie jestem pewien, jak wcześniej to obejrzałem, jestem pewien, że nie musiałem tego robić, kiedy instalowałem to wcześniej!
Wszystkie nowe pliki .deb będą w
new/
.Uwaga : to było na squeeze - dpkg na wheezy ma teraz --force-bad-wersję.
źródło
Do szybkiego tworzenia pakietów możesz użyć programu checkinstall. Wykonuje instalację programu, obserwuje zmiany - i tworzy pakiet deb lub rpm.
źródło
źródło