Ich habe ein triviales Befehlszeilenprogramm, das buchstäblich aus einem Python-Skript und einigen Shell-Hilfsskripten besteht. Ich würde gerne etwas über das Packen dieses Programms lernen, obwohl es trivial ist.
Von dem, was ich gesammelt habe, ging ich die Route configure / make / install. Da ich nichts zu konfigurieren oder irgendetwas zu machen hatte, erstellte ich einfach ein Makefile mit nichts anderem als einem Installationsabschnitt:
%Vor%An diesem Punkt installiert und läuft mein Programm gut mit sudo make install.
Dann versuche ich, eine Deb-Datei mit checkinstall wie folgt zu erstellen:
> %Vor%Es scheint so zu sein, dass es den Installationsteil passiert, da es erfolgreich gemeldet wurde, aber dann schlägt es fehl:
%Vor%Das Programm ist installiert, aber soweit ich das beurteilen kann, macht diese neu erstellte .deb-Datei nichts. dpkg -L my-program ergibt nur
%Vor%und das manuelle Entfernen und Installieren von der deb-Datei scheint nichts zu tun - es bringt keine Dateien irgendwo hin.
Also, (1) Ist etwas falsch mit meiner Herangehensweise? und (2) Wie kann ich das checkinstall Problem beheben?
Vielen Dank für die Antworten, obwohl ich gut mit Code umgehen kann, ich habe nie etwas über die Verpackung / Distribution gewusst.
Die doppelte Verwendung von sudo ist das Problem.
Mit einer Datei install.sh wie
%Vor%Befehl
%Vor%funktioniert während
%Vor%zeigt
an %Vor%und erzeugt ein leeres Paket.
Ich bin nicht sicher, ob das genau die Frage beantwortet, aber hier ist, was ich bis jetzt bekommen habe (auf ubuntu lucid, checkinstall 1.6.1):
Ich habe versucht, ein Open-Source-Projekt zu erstellen, das gut funktioniert. Dann habe ich versucht, es für debian zu packen:
checkinstall -D --install=no --pkgname=$PKGNAME --pkgversion=0.0.1 --pkgrelease="svn-001" [email protected] --strip=no --stripso=no --addso=yes
Dies ist im Prinzip bei demselben Building file list... FAILED!
fehlgeschlagen; und eine ähnliche grep: /var/tmp/tmp.NaoiwTHT6F/newfile: No such file or directory
wurde gemeldet.
Ich habe auch versucht, make
am Ende des Befehls checkinstall
hinzuzufügen - das hat auch nicht viel bewirkt.
Schließlich habe ich Folgendes versucht:
make clean
checkinstall -D --install=no --pkgname=$PKGNAME --pkgversion=0.0.1 --pkgrelease="svn-001" [email protected] --strip=no --stripso=no --addso=yes -d2 make
Der Schalter -d2
soll Debug aktivieren; und ... make
wird noch einmal ausgeführt.
Das -d2
gibt das temporäre Verzeichnis aus:
debug: The temporary directory is: [ /var/tmp/tmp.NaoiwTHT6F ], also kann man es überprüfen, indem man auflistet ... Und tatsächlich kann ich bestätigen, dass in meinem Fall kein
newfile
generiert wird (es gibt jedoch newfiles
, newfiles.installwatch
, newfiles-tar
und %Code%). Tatsächlich stellt newfiles.tmp
ein checkinstall
Skript dar, und so kann man bestätigen, dass bash
nur einmal darin vorkommt:
%Vor%
Auch das Debug zeigt auf diese Dateien / Verzeichnisse:
%Vor% Beachten Sie, dass standardmäßig der Pfad zu meinem Build-Ordner, newfile
, ausgeschlossen ist - und in diesem Projekt speichert dieses Projekt auch die erstellten ausführbaren Dateien!
Offensichtlich, wenn /path/to/myproject-build
in make
beim ersten Build weitergeht, kann sie neu erzeugte ausführbare Dateien erfassen - sie werden in checkinstall
; In meinem Fall liegt das Problem jedoch darin, dass die ausführbaren Dateien in demselben Verzeichnis enden, in dem ${TMP_DIR}/newfiles
aufgerufen wird. Also in diesem Dialog:
... ich muss tatsächlich antworten checkinstall
- sonst würde ich nichts bekommen! Ich kann dann den Inhalt mit überprüfen:
Das Problem ist jedoch, dass n
:
checkinstall
Dateien sowie .o
Verzeichnisse .svn
, und /usr/bin
s zu .so
Kurz gesagt - einige der oben genannten Ansätze können dazu führen, dass ein /usr/lib
nicht komplett leer ist. aber das bedeutet nicht, dass man nur die benötigten Dateien dort hat oder dass sie zu den üblichen Installationszielen weitergeleitet werden würden ...
Nun, hoffe das hilft wenigstens ein bisschen,
Prost!
Ich hatte ähnliche Probleme. Am Ende folgte ich diesem sehr einfachen, aber ziemlich manuellen Ansatz.
Legen Sie die Dateien, die Sie verpacken möchten, zum Beispiel in debian / usr / bin ab. Sie müssen die üblichen configure, make, make install
Schritte nicht abschließen.
Tags und Links makefile deb checkinstall