Jak ręcznie utworzyć plik DEB?

46

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.

czy to możliwe?

stokrotka
źródło
Niezbyt dobra odpowiedź, którą wybierasz?
Gigamegs,
@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).

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

Gilles „SO- przestań być zły”
źródło
3
IMO to kopia z mojego anwsera? Co myślisz?
Gigamegs,
1
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-binary control.tar.gzi data.tar.gz.

Wreszcie potrzebujesz arpakietu, aby utworzyć plik .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz

Gigamegs
źródło
1
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.

JM Becker
źródło
1

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

matematyka
źródło
1

Do szybkiego tworzenia pakietów możesz użyć programu checkinstall. Wykonuje instalację programu, obserwuje zmiany - i tworzy pakiet deb lub rpm.

niezdefiniować
źródło
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.
zdefiniowano
-4
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e [email protected] -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
  libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage
Killinks
źródło