Este artículo fue publicado originalmente en go2linux.org el 7 de febrero de 2008. El dominio ya no me pertenece, pero soy el autor original. Lo republico aquí en garron.me con correcciones y mejoras.

Introducción

Cuando compilas software desde fuentes y ejecutas make install, los archivos se distribuyen por el sistema de archivos sin dejar ningún registro de dónde fueron. Eliminar el software después implica buscar cada archivo manualmente.

checkinstall resuelve esto: intercepta make install, observa qué archivos se escriben y los empaqueta en un .deb o .rpm real. Instalas ese paquete de forma normal, así que tu gestor de paquetes lo conoce y puede eliminarlo limpiamente.

Instalación

En Debian y Ubuntu:

sudo apt install checkinstall

En Fedora:

sudo dnf install checkinstall

En CentOS/RHEL:

sudo yum install checkinstall

Cómo funciona

El flujo estándar para compilar desde fuentes es:

./configure
make
make install     # ← checkinstall reemplaza este paso

En lugar de make install, ejecutas:

sudo checkinstall

checkinstall ejecuta make install internamente mientras rastrea cada archivo que se escribe, luego construye un paquete con esos archivos y lo instala mediante dpkg (en Debian/Ubuntu) o rpm (en Fedora/CentOS).

Ejemplo paso a paso

Como ejemplo, compilando htop desde fuentes en Debian/Ubuntu:

# Instalar dependencias de compilación
sudo apt install build-essential libncursesw5-dev autotools-dev autoconf automake

# Descargar y extraer el código fuente
wget https://github.com/htop-dev/htop/releases/download/3.3.0/htop-3.3.0.tar.xz
tar xf htop-3.3.0.tar.xz
cd htop-3.3.0

# Configurar y compilar
./autogen.sh && ./configure
make

# Instalar como paquete .deb
sudo checkinstall --pkgname=htop --pkgversion=3.3.0 --default

El flag --default acepta todos los valores por defecto sin preguntas interactivas.

Prompts interactivos

Sin --default, checkinstall te pide que rellenes los metadatos del paquete:

Please write a description for the package.
>> htop 3.3.0 compilado desde fuentes

*****************************************
**** Debian package creation selected ***
*****************************************
0 - Maintainer: [ root@hostname ]
1 - Summary:    [ htop 3.3.0 compilado desde fuentes ]
2 - Name:       [ htop ]
3 - Version:    [ 3.3.0 ]
4 - Release:    [ 1 ]
5 - License:    [ GPL ]
6 - Group:      [ checkinstall ]
7 - Architecture: [ amd64 ]

Pulsa el número del campo que quieras editar y Enter para confirmar.

Flags útiles

| Flag | Efecto | |---|---| | --pkgname=nombre | Establece el nombre del paquete | | --pkgversion=ver | Establece la cadena de versión | | --default | Acepta todos los valores por defecto, sin prompts | | --install=no | Construye el paquete pero no lo instala | | -D | Fuerza formato de paquete Debian (.deb) | | -R | Fuerza formato RPM | | -S | Fuerza formato Slackware (.tgz) |

Eliminar el paquete después

Como el paquete está registrado en el gestor de paquetes, la eliminación es limpia:

sudo dpkg -r htop          # Debian/Ubuntu
sudo rpm -e htop           # Fedora/CentOS

Notas

  • checkinstall funciona con cualquier sistema de construcción que tenga un objetivo install, no solo make. Pasa el comando de instalación como argumento: sudo checkinstall ninja install.
  • No resuelve dependencias — eres responsable de asegurarte de que las dependencias de compilación y ejecución estén instaladas.
  • Para sistemas en producción, construir paquetes reales con debuild o rpmbuild es más robusto. checkinstall es más adecuado para instalaciones personales rápidas.