it-swarm.com.de

Erstellen Sie ein .deb-Paket aus Skripten oder Binärdateien

Ich suchte nach einer einfachen Möglichkeit, .deb-Pakete für Dinge zu erstellen, die keinen Quellcode zum Kompilieren haben (Configs, Shellscripts, proprietäre Software). Dies war ein ziemliches Problem, da die meisten Paket-Tutorials davon ausgehen, dass Sie ein Quell-Tarball haben, das Sie kompilieren möchten. Dann habe ich diese kurze Anleitung gefunden.

Danach habe ich ein kleines Skript erstellt, um ein einfaches Repository zu erstellen. So was:

rm /export/my-repository/repository/*
cd /home/tdeutsch/deb-pkg
for i in $(ls | grep my); do dpkg -b ./$i /export/my-repository/repository/$i.deb; done
cd /export/avanon-repository/repository
gpg --armor --export "My Package Signing Key" > PublicKey
apt-ftparchive packages ./ | gzip > Packages.gz
apt-ftparchive packages ./ > Packages
apt-ftparchive release ./ > /tmp/Release.tmp; mv /tmp/Release.tmp Release
gpg --output Release.gpg -ba Release

Ich habe den Schlüssel zum passenden Schlüsselbund hinzugefügt und die Quelle so eingefügt:

deb http://my.default.com/my-repository/ ./

Es sieht so aus, als ob das Repo selbst gut funktioniert (ich hatte einige Probleme, um diese zu beheben, musste ich die Pakete zweimal hinzufügen und die temporäre Datei als Workaround für die Release-Datei verwenden). Ich habe auch einige heruntergeladene .deb in das Repo gelegt, es sieht so aus, als würden sie auch ohne Probleme funktionieren. Aber meine selbst erstellten Pakete haben nicht ... Wenn ich Sudo apt-get update mache, verursachen sie Fehler wie diesen:

E: Problem parsing dependency Depends
E: Error occurred while processing my-printerconf (NewVersion2)
E: Problem with MergeList /var/lib/apt/lists/my.default.com_my-repository_._Packages
E: The package lists or status file could not be parsed or opened.

Hat jemand eine Idee was ich falsch gemacht habe?

UPDATE 06.03.2012: Nur ein Hinweis für eine andere Person, die nach einer einfachen Möglichkeit zum Erstellen von DEBs sucht: Schauen Sie sich FPM .

73
Thomas Deutsch

Das Tutorial, das Sie verlinkt haben, verwendet einen einfachen Ansatz zum Erstellen eines Pakets. Ein solcher Ansatz wird normalerweise nicht empfohlen und kann zu allen möglichen Problemen führen, wenn er nicht sorgfältig durchgeführt wird.

Das Erstellen einer .deb-Datei für ein Skript ist sehr einfach, sobald Sie die Grundlagen des Packens verstanden haben. In einer Nussschale:

_# Configure your paths and filenames
SOURCEBINPATH=~
SOURCEBIN=myscript.sh
DEBFOLDER=~/somescripts
DEBVERSION=0.1

DEBFOLDERNAME=$DEBFOLDER-$DEBVERSION

# Create your scripts source dir
mkdir $DEBFOLDERNAME

# Copy your script to the source dir
cp $SOURCEBINPATH/$SOURCEBIN $DEBFOLDERNAME 
cd $DEBFOLDERNAME

# Create the packaging skeleton (debian/*)
dh_make -s --indep --createorig 

# Remove make calls
grep -v makefile debian/rules > debian/rules.new 
mv debian/rules.new debian/rules 

# debian/install must contain the list of scripts to install 
# as well as the target directory
echo $SOURCEBIN usr/bin > debian/install 

# Remove the example files
rm debian/*.ex

# Build the package.
# You  will get a lot of warnings and ../somescripts_0.1-1_i386.deb
debuild
_

Um weitere Skripte hinzuzufügen, müssen diese in das Verzeichnis kopiert und zur debian/install-Datei hinzugefügt werden. Führen Sie dann einfach debuild erneut aus. Sie sollten auch die debian/* -Dateien nach Bedarf überprüfen und aktualisieren.

Sie sollten die Manpages lesen für: dh_make , dh_install und debuild

70
João Pinto