Ok, hier ist eine Sache, die mich verwirrt ... Ich versuche, ein Paket aus dem Quellcode zu erstellen und dann checkinstall
ein .deb-Paket zu generieren. Beachten Sie, dass ich nur das DEB-Paket erstellen möchte, es aber NICHT installieren möchte .
Hier ist ein Beispiel: Ich arbeite unter Ubuntu 11.04 und installiere zuerst das feh
Paket aus den Standard-Repositorys. die Versionsnummer ist offenbar 1.3.4.dfsg.1-3
Dann versuche ich, feh
von der Quelle zu bauen ; Ich muss make
überholen und kann das Neue feh
von der Kommandozeile aus ausführen . herrlich.
Zum Erstellen eines Deb-Pakets verwende ich nun die folgende Befehlszeile:
sudo checkinstall -D -y \
--install=no \
--fstrans=no \
--reset-uids=yes \
--pkgname=feh \
--pkgversion=2.7 \
--pkgrelease="tar.bz2" \
--arch=i386 \
--pkglicense=GPL \
--maintainer="Debian PhotoTools Maintainers <[email protected]>" \
--pakdir=../.. \
--requires=libc6,libice6,libsm6,libx11-6,libxaw7,libxext6,libxmu6,libxt6,dpkg,install-info
OK, merke, dass ich dort benutzt habe --install=no
? Sogar man checkinstall
sagt:
--install Schaltet die Installation des erstellten Pakets um.
Nun, darauf checkinstall
antwortet dieser Befehl:
checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.
/usr/bin/checkinstall: eval: line 598: syntax error near unexpected token `newline'
/usr/bin/checkinstall: eval: line 598: `echo Debian PhotoTools Maintainers <[email protected]>'
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]: y
Preparing package documentation...OK
*****************************************
**** Debian package creation selected ***
*****************************************
This package will be built according to these values:
0 - Maintainer: [ root@mypc ]
1 - Summary: [ Package created with checkinstall 1.6.2 ]
2 - Name: [ feh ]
3 - Version: [ 2.7 ]
4 - Release: [ tar.bz2 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ i386 ]
8 - Source location: [ feh-2.7 ]
9 - Alternate source location: [ ]
10 - Requires: [ libc6,libice6,libsm6,libx11-6,libxaw7,libxext6,libxmu6,libxt6,dpkg,install-info ]
11 - Provides: [ feh ]
12 - Conflicts: [ ]
13 - Replaces: [ ]
Enter a number to change any of them or press ENTER to continue:
Installing with make install...
========================= Installation results ===========================
installing manuals to /usr/local/share/man
installing docs to /usr/local/share/doc/feh
installing executables to /usr/local/bin
installing fonts to /usr/local/share/feh/fonts
installing images to /usr/local/share/feh/images
installing examples to /usr/local/share/doc/feh/examples
======================== Installation successful ==========================
NOOOOOOOOOOOOOOOOO !!!!!!!!!!
Ich wollte nicht, dass das verdammte Paket installiert wird - das ist der Grund, --install=no
warum ich es benutzt habe, um laut zu schreien !!!
Und dann, anscheinend in dem Versuch, sarkastisch zu sein, wird das Protokoll fortgesetzt:
Copying documentation directory...
./
./TODO
./AUTHORS
./COPYING
./ChangeLog
./README
Copying files to the temporary directory...OK
Stripping ELF binaries and libraries...OK
Compressing man pages...OK
Building file list...OK
Building Debian package...OK
NOTE: The package will not be installed
Sie machen wohl Witze mit diesem " HINWEIS: Das Paket wird nicht installiert ", oder, Mr. checkinstall
? Sicher bist du das; nachdem dies erledigt ist, notiere was ich bekomme:
$ apt-cache show feh | grep Version
Version: 1.10-1
$ feh --version
feh version 2.7
Compile-time switches: curl xinerama
$ which feh
/usr/local/bin/feh
Ich 1.10-1
bin mir nicht sicher, woher das kommt (sollte es zumindest 1.3.4
wie oben sein?) - aber es ist verdammt offensichtlich, dass die 2.7 DID trotz meiner Anweisung, NICHT zu installieren, installiert wurde ...
Sicher kann ich versuchen, danach zu entfernen:
$ sudo dpkg -r feh
(Reading database ... 202193 files and directories currently installed.)
Removing feh ...
$ sudo dpkg --purge feh
(Reading database ... 202163 files and directories currently installed.)
Removing feh ...
Purging configuration files for feh ...
$ feh --version
feh version 2.7
Compile-time switches: curl xinerama
$ which feh
/usr/local/bin/feh
... aber nicht einmal dpkg --purge
funktioniert ( apt-get remove
würde zunächst nicht funktionieren, da es sich um ein manuell installiertes .deb-Paket handelt). Und abgesehen dpkg -r
davon, dass ich keine Version angegeben habe (also bin ich mir nicht sicher, was eigentlich hätte entfernt werden sollen) - hat es die verdammte ausführbare Datei tatsächlich NICHT entfernt ?!
Aber kann jemand erklären, was hier vor sich geht - und wie man checkinstall
es schafft , nur eine .deb-Datei zu generieren und NICHT gleichzeitig zu installieren? Bonusfrage - Wie entferne ich ALLE Dateien, einschließlich der ausführbaren Dateien in /usr/local/bin/
, die auf diese Weise installiert wurden - da dies anscheinend dpkg -r
nicht funktioniert?
quelle
eval echo $1
... Eigentlich sollte es so seineval "echo '$1'"
. Ich werde versuchen, mit dem Autor in Kontakt zu treten oder so.Antworten:
Richtig; Ich glaube, ich habe endlich verstanden, was passiert - die Schlüsselzeile, die ich verpasst habe, ist:
Dies bedeutet, dass das
make install
2.7-Quellpaket ausgeführt wurde - wahrscheinlich, um zu "sehen", wo diese Dateien letztendlich landen werden, um diese Speicherorte in die neue .deb-Datei zu schreiben. Aber auf jeden Fall wurde die neue 2.7 .deb nicht installiert - und deshalb konnte sie auch nicht mit entfernt werdendpkg -r
, und die ausführbare Datei verweilte auch danach nochdpkg -r
.Um diese Installation nach dem Ausführen zu entfernen
checkinstall
, sollte man eigentlichmake uninstall
aus demfeh
Quellordner aufrufen :... und dann kann ich endlich das neu erstellte Paket ausprobieren:
Na ja ... hoffe ich habe richtig verstanden, wie der Prozess jetzt abläuft.
quelle
Man sollte fstrans auf yes ändern , um sicherzustellen, dass checkinstall den echten Dateibaum nicht berührt
quelle
--install=no
und die Dateien wurden installiert, aberdpkg
nicht aktualisiert.Sie können "zweimal" installieren:
Über das von Ihnen erstellte Paket. Sie können es mit ausschalten
--install=no
Über die Marke. Sie können es ausschalten, indem Sie einfach
make
(ohneinstall
)Beispiele:
Überhaupt keine Installation:
sudo checkinstall --install=no make
Eine Installation über make:
sudo checkinstall --install=no make install
quelle
Sie sollten versuchen, Folgendes zu verwenden:
quelle
Verwenden Sie: sudo checkinstall -D make -n install
quelle
make -n install
beendet zwar diemake
eigentliche Installation der Dateien,checkinstall
interpretiert die Ergebnisse jedoch nicht richtig. Sie erhalten eine Deb-Datei, die nicht alle benötigten Dateien enthält. Das funktioniert also nicht.