checkinstall erstellt nutzlose Deb?

8

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.

    
cemulate 17.05.2011, 06:33
quelle

3 Antworten

5

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.

    
Sebastian Pipping 21.05.2014 13:22
quelle
3

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:

%Vor%

... ich muss tatsächlich antworten checkinstall - sonst würde ich nichts bekommen! Ich kann dann den Inhalt mit überprüfen:

%Vor%

Das Problem ist jedoch, dass n :

  • auch enthält checkinstall Dateien sowie .o Verzeichnisse
  • zählt den absoluten Pfad als relativ (wird nicht automatisch ausführbare Dateien "sagen", .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!

    
sdaau 03.07.2012 21:58
quelle
1

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.

    
ldgorman 04.04.2014 12:50
quelle

Tags und Links