Ok, aquí hay una cosa que me desconcierta ... Estoy tratando de construir un paquete desde la fuente, y luego lo uso checkinstall
para generar un paquete .deb. Tenga en cuenta que solo quiero crear el paquete .deb, pero NO quiero instalarlo .
Entonces, aquí hay un ejemplo: estoy en Ubuntu 11.04, y primero instalo su feh
paquete desde los repositorios predeterminados; que aparentemente tiene un número de versión 1.3.4.dfsg.1-3
Entonces estoy tratando de construir feh
desde la fuente ; tiene make
que pasar, y puede ejecutar el nuevo feh
desde la línea de comandos; espléndido.
Ahora, finalmente, para crear un paquete deb, uso la siguiente línea de comando:
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, ¿te das cuenta de que he usado --install=no
allí? Incluso man checkinstall
dice:
--instalar Alternar la instalación del paquete creado.
Bueno, esto es lo que checkinstall
responde este comando:
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 !!!!!!!!!!
¡NO quería que el maldito paquete se INSTALA, ES POR ESO QUE --install=no
LO UTILIZÉ PARA CRYIN OUT LOUD!
Y luego, aparentemente en un intento de ser sarcástico, el registro continúa:
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
Debe estar bromeando con esta " NOTA: El paquete no se instalará ", ¿verdad, Sr. checkinstall
? Seguro que eres; Una vez hecho esto, tenga en cuenta lo que obtengo:
$ 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
No estoy seguro de dónde 1.10-1
vino (¿debería haber sido al menos 1.3.4
, como se indicó anteriormente?), Pero es obvio que se instaló el 2.7, A pesar de mis instrucciones de NO instalar ...
Seguramente, puedo intentar eliminar después:
$ 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
... pero ni siquiera dpkg --purge
funciona ( apt-get remove
para empezar no funcionaría, ya que es un paquete .deb instalado manualmente). Y además de dpkg -r
no dar una versión (así que no estoy realmente seguro de qué es lo que debería haberse eliminado), ¿de hecho NO eliminó el ejecutable sangriento?
Pero ¿alguien puede explicar lo que está pasando aquí - y cómo llegar checkinstall
a la única generar un .deb, y lo instale al mismo tiempo? Pregunta adicional: ¿cómo eliminar TODOS los archivos, incluidos los ejecutables /usr/local/bin/
, que se instalaron de esta manera, ya que aparentemente dpkg -r
no funciona?
fuente
eval echo $1
... En realidad debería estarloeval "echo '$1'"
. Creo que intentaré ponerme en contacto con el autor o algo así.Respuestas:
Derecho; Creo que finalmente entendí lo que está sucediendo, la línea clave que me perdí es:
Esto significa que
make install
se ejecutó el paquete de origen 2.7, probablemente para "ver" dónde terminarán esos archivos, a fin de escribir esas ubicaciones en el nuevo .deb? Pero en cualquier caso, el nuevo 2.7 .deb de hecho no se instaló, y es por eso que no se pudo eliminardpkg -r
, y el ejecutable aún persistía incluso despuésdpkg -r
.Entonces, para eliminar esta instalación después de la ejecución
checkinstall
, uno debería llamarmake uninstall
desde lafeh
carpeta de origen:... y finalmente puedo probar el paquete recién creado:
Oh bueno ... espero haber entendido correctamente cómo va el proceso ahora, sin embargo ...
fuente
Uno debe cambiar fstrans a yes para asegurarse de que checkinstall no toque el archivo real
fuente
--install=no
y los archivos se instalaron perodpkg
no se actualizaron.Puede instalar "dos veces":
A través del paquete que creó. Puedes apagarlo
--install=no
A través de la marca. Puede apagarlo simplemente escribiendo
make
(sininstall
)Ejemplos:
Sin instalación en absoluto:
sudo checkinstall --install=no make
Una instalación a través de make:
sudo checkinstall --install=no make install
fuente
Deberías intentar usar:
fuente
Uso: sudo checkinstall -D make -n install
fuente
make -n install
no dejamake
de instalar realmente los archivos, perocheckinstall
no interpreta correctamente los resultados. Terminas con un archivo deb que no contiene todos los archivos que necesitas. Entonces, esto no funciona.