Ok, voici une chose qui me laisse perplexe ... J'essaie de construire un package à partir des sources, puis de l'utiliser checkinstall
pour générer un package .deb. Notez que je veux simplement créer le package .deb, mais je ne veux PAS l' installer .
Donc, voici un exemple - je suis sur Ubuntu 11.04, et d'abord j'installe son feh
package à partir des référentiels par défaut; qui a un numéro de version apparemment 1.3.4.dfsg.1-3
Ensuite, j'essaie de construire à feh
partir de la source ; obtenu make
à passer, et peut exécuter la nouvelle feh
de la ligne de commande; splendide.
Enfin, pour créer un paquet deb, j'utilise la ligne de commande suivante:
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, remarquez que j'y ai utilisé --install=no
? Dit même man checkinstall
:
--install Bascule l'installation du package créé.
Eh bien, voici ce que cette checkinstall
commande répond:
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 !!!!!!!!!!
Je ne voulais PAS que ce fichu paquet s'installe - C'EST POURQUOI J'AI --install=no
UTILISÉ POUR CRYIN OUT LOUD !!!
Et puis, apparemment dans une tentative d'être sarcastique, le journal continue:
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
Vous devez plaisanter avec cette " REMARQUE: le paquet ne sera pas installé ", n'est-ce pas, monsieur checkinstall
? Évidemment que tu l'es; après cela, notez ce que j'obtiens:
$ 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
Vous ne savez pas d'où cela 1.10-1
vient (cela aurait dû être au moins 1.3.4
, comme ci-dessus?) - mais c'est sacrément évident que le 2.7 DID est installé, EN dépit de mes instructions de ne pas installer ...
Je peux sûrement essayer de supprimer par la suite:
$ 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
... mais ne dpkg --purge
fonctionne même pas ( apt-get remove
ne fonctionnerait pas pour commencer, car il s'agit d'un package .deb installé manuellement). Et en plus de dpkg -r
ne pas donner de version (donc je ne suis pas vraiment sûr de ce qui aurait dû être supprimé) - en fait, il n'a PAS supprimé l'exécutable sanglant?!
Mais quelqu'un peut-il expliquer ce qui se passe ici - et comment arriver checkinstall
à générer uniquement un .deb, et PAS l'installer en même temps? Question bonus - comment supprimer TOUS les fichiers, y compris les exécutables /usr/local/bin/
, qui ont été installés de cette façon - car apparemment, dpkg -r
cela ne fonctionne pas?
la source
eval echo $1
... Elle devrait en fait l'êtreeval "echo '$1'"
. Je suppose que je vais essayer de prendre contact avec l'auteur ou quelque chose.Réponses:
Droite; Je pense que j'ai finalement compris ce qui se passe - la ligne clé que j'ai manquée est:
Cela signifie que le
make install
package source de 2.7 a été exécuté - probablement pour "voir" où ces fichiers finiront par se retrouver, afin d'écrire ces emplacements dans le nouveau .deb? Mais en tout cas, le nouveau 2.7 .deb n'a en effet pas été installé - et c'est pourquoi il n'a pas pu être supprimédpkg -r
, et l'exécutable persistait même aprèsdpkg -r
.Donc, pour supprimer cette installation après l'exécution
checkinstall
, il faut en fait appeler àmake uninstall
partir dufeh
dossier source:... et enfin je peux essayer le package nouvellement créé:
Oh bien .... j'espère avoir bien compris comment se passe le processus maintenant, cependant ..
la source
Il faut changer fstrans en yes pour s'assurer que checkinstall ne touchera pas le vrai filetree
la source
--install=no
et les fichiers ont été installés maisdpkg
n'ont pas été mis à jour.Vous pouvez installer "deux fois":
Via le package que vous avez créé. Vous pouvez le désactiver en
--install=no
Via la marque. Vous pouvez le désactiver en tapant simplement
make
(sansinstall
)Exemples:
Aucune installation du tout:
sudo checkinstall --install=no make
Une installation via make:
sudo checkinstall --install=no make install
la source
Vous devriez essayer d'utiliser:
la source
Utilisation: sudo checkinstall -D make -n install
la source
make -n install
n'arrêtemake
pas l'installation des fichiers, maischeckinstall
n'interprète pas correctement les résultats. Vous vous retrouvez avec un fichier deb ne contenant pas tous les fichiers dont vous avez besoin. Donc ça ne marche pas.