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?
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?
Odpowiedzi:
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-1
pierwszej 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:
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
, aby debian/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).
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ć.
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ływany DEBIAN
na najwyższym poziomie, zawierający pliki sterujące i skrypty opiekuna.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
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-binary
i 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
.
Jeśli masz już pakiet binarny z innej dystrybucji, możesz użyć programu Alien do jego konwersji.
dch -i
.
ar
robi, tar
prawda?
dh_make --createorig
zastosowania, trzeba export DEBEMAIL="me@example.com"
i export 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:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <xxx@xxx.xx>
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.gz
i data.tar.gz
.
Wreszcie potrzebujesz ar
pakietu, aby utworzyć plik .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
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.
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.
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ę.
Do szybkiego tworzenia pakietów możesz użyć programu checkinstall. Wykonuje instalację programu, obserwuje zmiany - i tworzy pakiet deb lub rpm.
$ 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 youremail@site.org -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