Ich möchte eine DEB-Datei manuell erstellen. Ich möchte nur einen Ordner bereitstellen, der zu installierende Daten enthält, und ein Skript, das nach der Installation ausgeführt wird.
Ist das möglich?
Ich möchte eine DEB-Datei manuell erstellen. Ich möchte nur einen Ordner bereitstellen, der zu installierende Daten enthält, und ein Skript, das nach der Installation ausgeführt wird.
Ist das möglich?
Antworten:
Meine Empfehlung ist, ein Quellpaket zu erstellen. Installiere build-essential , debhelper , dh-make . Wechseln Sie in das Verzeichnis, in dem sich die zu installierenden Dateien befinden (der Verzeichnisname muss die Form haben $PACKAGE-$VERSION
, z. B. myapp-4.2-1
für Ihren ersten Versuch, Myapp V4.2 zu packen), und führen Sie es aus dh_make --createorig
. Beantworte die Fragen. Debhelper erstellt die grundlegende Infrastruktur, die zum Erstellen eines Pakets erforderlich ist, indem Dateien in einem Unterverzeichnis namens generiert werden debian
, sowohl einige obligatorische Dateien als auch Vorlagen für optionale Dateien. Möglicherweise müssen Sie einige dieser Dateien ändern:
debian/rules
, um zu erstellen, was erstellt und an der richtigen Stelle installiert werden muss. Wenn Sie nur einige Dateien kopieren und keine Dateien kompilieren müssen, bearbeiten Sie die Datei, debian/install
um anzugeben, welche Dateien wo installiert werden müssen.debian/copyright
, um Lizenzinformationen zu Ihrem Paket und Informationen zum Abrufen der neuesten Version (falls relevant) hinzuzufügen.debian/changelog
, um den Verweis auf einen ITP zu entfernen (dies ist nur relevant, wenn Sie für das Debian-Projekt arbeiten). Benennen Sie sie debian/postinst.ex
um debian/postinst
und fügen Sie dort Ihre Befehle nach der Installation hinzu. Wenn Sie Ihr Paket später aktualisieren, führen Sie den Befehl aus, debchange -i
um einen Changelog-Eintrag hinzuzufügen, oder bearbeiten Sie die Datei in Emacs (mit installiertem dpkg-dev-el ).Führen Sie dies aus dpkg-buildpackage -rfakeroot -us -uc
, um das .deb
Paket zu erstellen (entfernen -us -uc
Sie es , wenn Sie das Paket mit Ihrem PGP-Schlüssel signieren möchten).
Wenn Sie sich entscheiden, ein Binärpaket direkt zu erstellen, ohne es aus einem Quellpaket zu erstellen, was nicht wirklich einfacher ist, da es nicht so viele Tools gibt, die den Prozess erleichtern, müssen Sie mit dem Format von deb-Paketen vertraut sein. Es ist im Debian Policy Manual beschrieben , insbesondere in Kap. 3 (Format von Binärpaketen) , Kap. 5 (Steuerdateien) , ch. 6 (Installationsskripte) und Anhang B (Manipulation von Binärpaketen) .
Sie stellen sicher, dass Ihr Paket die erwarteten Dateien installiert /usr/share/doc/copyright
(einschließlich der Lizenz des Paketinhalts sowie /usr/share/doc/changelog.Debian.gz
der Position, an der sich die neueste Version des Pakets befindet) und (einschließlich des Änderungsprotokolls des Deb-Pakets). Sie benötigen diese nicht, wenn Sie das Paket nur intern verwenden möchten, aber es ist besser, sie zu haben.
Wenn Sie die Debian-Werkzeuge zur Verfügung haben, verwenden Sie dpkg-deb
, um das Paket zu erstellen. Fügen Sie in dem Verzeichnis, das die zu installierenden Daten enthält, ein Verzeichnis hinzu, das DEBIAN
auf der obersten Ebene aufgerufen wird und die Steuerdateien und Betreuerskripten enthält.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Wenn Sie nicht über die Debian-Werkzeuge verfügen, erstellen Sie ein Archiv der zu paketierenden Dateien data.tar.gz
, ein separates Archiv der aufgerufenen Steuerdateien control.tar.gz
(keine Unterverzeichnisse) und eine Textdatei debian-binary
mit dem Namen und dem Inhalt des Texts 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
Sie benötigen mindestens eine Steuerdatei mit den Feldern Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
, und jede notwendige Abhängigkeitserklärung.
Das nach der Installation auszuführende Skript wird aufgerufen postinst
. Stellen Sie sicher, dass es ausführbar ist. Es geht nebenher control
.
Wenn Sie bereits ein Binärpaket aus einer anderen Distribution haben, können Sie es mit alien konvertieren.
dch -i
.
ar
macht das tar
nicht?
dh_make --createorig
verwendet, müssen Sie export DEBEMAIL="me@example.com"
und export DEBFULLNAME="Firstname Lastname"
vorher.
Zunächst müssen Sie einen Erstellungsordner und ein Archiv Ihrer Dateien erstellen: tar czvf data.tar.gz files
Dann müssen Sie im Build-Ordner eine Steuerdatei mit den gewünschten Informationen erstellen:
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
Anschließend können Sie unabhängig voneinander Preinst-, Postint-, Prerm- und Postrm-Shell-Skripte hinzufügen, um das Verhalten der .deb-Datei vor und nach der Installation sowie vor und nach dem Entfernen zu steuern. Anschließend können Sie das Steuerarchiv mit tar erstellen: tar czvf control.tar.gz control preinst postinst prerm postrm
Dann brauchen Sie einen debian-Binärdatei: echo 2.0 > debian-binary
. In Ihrem Build-Ordner sollten Sie nun folgende Dateien haben: debian-binary
control.tar.gz
und data.tar.gz
.
Schließlich benötigen Sie ein ar
Paket, um die .deb-Datei zu erstellen:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
könnte es sich lohnen zu betonen, dass die Reihenfolge wichtig ist: Kontrolle muss vor Daten kommen.
Ich mache viele Pakete, und ein vollständiges zu machen, ist keine triviale Angelegenheit. Positiv ist zu vermerken, dass Dateien und Skripte viel weniger Arbeit erfordern. Sie können ein solches Paket sehr einfach mit einem Tool namens debreate erstellen .
Debreate ist eine wirklich einfache GUI, mit der Sie einfach DEB-Pakete erstellen können. Sie können einfach angeben, welche Dateien wo abgelegt werden und ob / was nach / vor der Installation / Deinstallation ausgeführt werden soll. Früher habe ich alle meine Pakete auf die übliche Weise erstellt, aber nachdem ich dieses Tool verwendet habe, werde ich nur zurückkehren, wenn dies erforderlich ist.
Sehen Sie sich das Debian-Wiki zum Thema Verpackung an , vielleicht equivs
(siehe Link) wird Ihren Anforderungen bereits entsprochen.
Die Wikipedia-Seite zum deb
Dateiformat enthält auch viele nützliche Links.
Stieß mit Zimbra 7 auf Debian mit seinen Ubuntu-Paketen darauf. (Ich bin hartnäckig, ich mag Debian> bUbuntu, obwohl Zimbra nur für Ubuntu veröffentlicht wurde.) Ich bin mir nicht sicher, wie ich das vorher umgangen habe.
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
Alle Ihre neuen .deb-Dateien befinden sich in new/
.
Hinweis : Dies war auf Squeeze - Dpkg auf Wheezy hat --Force-Bad-Version jetzt.
Zum schnellen Erstellen von Paketen können Sie das Programm checkinstall verwenden. Es installiert ein Programm, beobachtet Änderungen - und erstellt daraus ein Deb- oder RPM-Paket.
$ 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