Este artículo describe una forma sencilla de crear un paquete Debian hecho en casa e incluirlo en un repositorio de paquetes local. Aunque podríamos usar un paquete existente de Debian/Ubuntu, comenzaremos desde cero creando y empaquetando nuestra propia aplicación trivial. Una vez que nuestro paquete esté listo, lo incluiremos en nuestro repositorio de paquetes local. Este artículo ilustra un enfoque muy simple, sin embargo, puede servir como modelo en muchos escenarios diferentes.
Requisitos de software y convenciones de la línea de comandos de Linux Categoría | Requisitos, convenciones o versión de software utilizada |
Sistema | Debian |
Software | El paquete básico de compilación |
Otro | Un servidor web Apache en funcionamiento y permisos de root |
Convenciones | # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios |
Crear un ejecutable binario
Lo primero que debemos hacer es crear un programa simple en C++, compilarlo y probarlo. En caso de que desee escribir un programa en C simple, visite nuestro completo tutorial de programación en C. Nuestro programa no hará nada más que imprimir "linuxconfig.org" en la pantalla. Aquí está el código:
#include <iostream>
int main() {
using namespace std;
cout << "linuxconfig.org\n";
}
Guarde el código anterior como linuxconfig.cc
. Para compilar el programa necesitamos el g++
compilador, que es proporcionado por el paquete build-essential. Podemos instalarlo ejecutando:
$ sudo apt-get install build-essential
Para compilar el código, usamos el siguiente comando de Linux:
$ g++ linuxconfig.cc -o linuxconfig$ ./linuxconfiglinuxconfig.org
Todo se ve bien. En este punto deberíamos tener un ejecutable llamado “linuxconfig” que imprime una cadena en la pantalla.
Crear un paquete Debian
Ahora que tenemos listo nuestro pequeño programa en forma de binario ejecutable, podemos crear un paquete debian. Para hacer eso usamos el dpkg-deb
herramienta. En primer lugar, necesitamos crear la estructura del paquete debian. Los únicos archivos necesarios para crear un paquete de Debian son:
- DEBIAN/control
- archivos personalizados para ser parte del paquete (no requerido)
Primero cree un directorio llamado linuxconfig
. Este directorio contendrá todos los archivos de paquete necesarios:
$ mkdir linuxconfig
A continuación, cree el directorio DEBIAN y el archivo de control:
$ mkdir linuxconfig/DEBIAN$ vi linuxconfig/DEBIAN/control
Dentro del archivo de control, ingresamos la siguiente información:
Paquete:linuxconfigVersión:1.0Sección:personalizadoPrioridad:opcionalArquitectura:todoEsencial:noTamaño instalado:1024Mantenedor:linuxconfig.orgDescripción:Imprimir linuxconfig.org en la pantalla
Genial, lo único que falta es nuestro programa linuxconfig. Dentro del linuxconfig
directorio creamos un árbol de directorios que representa la ruta donde se instalará nuestro programa en el sistema, y copiamos el
ejecutable en él:
$ mkdir -p linuxconfig/usr/bin/$ cp /ruta/hacia/linuxconfig linuxconfig/usr/bin/
En este punto estamos listos para crear el paquete:
$ dpkg-deb --build linuxconfigdpkg-deb:construcción del paquete `linuxconfig' en `linuxconfig.deb'.$ lslinuxconfig linuxconfig.deb
Es posible que desee cambiar el nombre del paquete para que incluya la versión del programa y la arquitectura del paquete. Por ejemplo:
$ mv linuxconfig.deb linuxconfig-1.0_amd64.deb
Todo listo ! ¡Nuestro paquete está listo! (NOTA:esto es solo un ejemplo, la creación de paquetes oficiales requiere más trabajo).
Configuración de un repositorio de paquetes local
Para crear un repositorio de paquetes local, necesitamos un archivo working. En este caso asumiremos el uso de Apache
con la configuración predeterminada. Para instalar el servidor web Apache, todo lo que necesitamos hacer es ejecutar:
$ sudo apt-get install apache2
Una vez instalado, para verificar que el servidor web funciona, podemos navegar a la dirección IP de la máquina (o a 'http://localhost', si se ejecuta un navegador en la propia máquina) que, en nuestro caso, es http:// 10.1.1.4. Deberíamos ver el
famoso ¡Funciona! mensaje.
El software del servidor web se está ejecutando pero aún no se ha agregado ningún contenido. El DocumentRoot
del VirtualHost
predeterminado de Apache , es /var/www/html
:aquí es donde crearemos nuestro repositorio.
Vamos a crear el directorio "debian" dentro de /var/www/html
y copie el paquete linuxconfig-1.0_amd64.deb dentro:
$ sudo mkdir /var/www/html/debian$ sudo cp /path/to/linuxconfig-1.0_amd64.deb /var/www/html/debian/
El siguiente paso consiste en la generación de una lista de paquetes. Pasamos a debian
y use el directorio dpkg-scanpackages
utilidad para realizar la tarea. Es posible que deba instalar dpkg-dev
paquete en caso de que dpkg-scanpackages
falta el comando:
$ dpkg-scanpackages. | gzip -c9> Packages.gzdpkg-scanpackages:info:Escribió 1 entradas en el archivo de paquetes de salida.
Nuestro repositorio local ya está listo.
Agregar el repositorio a las fuentes de software
En este punto, para poder instalar nuestro paquete desde el repositorio local que creamos, necesitamos editar el /etc/apt/sources.list
archivo, agregue la entrada correspondiente (cambie la dirección IP para reflejar la de su máquina) y
sincronice los repositorios:
echo "deb [confiable=sí] http://10.1.1.4/debian ./" | tee -a /etc/apt/sources.list> /dev/null
Asegúrese de agregar el [trusted=yes]
anterior para evitar el siguiente mensaje de error:
Release' no tiene un archivo de Release. N:La actualización desde un repositorio de este tipo no se puede realizar de forma segura y, por lo tanto, está deshabilitada de forma predeterminada.
Sincronizar repositorios:
$ sudo apt-get updateIgn:1 http://10.1.1.4/debian ./ InReleaseIgn:2 http://10.1.1.4/debian ./ ReleaseIgn:3 http://10.1.1.4/debian ./ PackagesIgn:3 http://10.1.1.4/debian ./ PackagesIgn:3 http://10.1.1.4/debian ./ PackagesGet:3 http://10.1.1.4/debian ./ Paquetes [303 B]
Para instalar nuestro paquete, ahora podemos usar la herramienta apt-get:
$ sudo apt-get install linuxconfigLeyendo listas de paquetes... ListoCreando árbol de dependenciaLeyendo información de estado... ListoSe instalarán los siguientes paquetes NUEVOS:linuxconfig0 actualizado, 1 recién instalado, 0 para eliminar y 8 no actualizados. Necesita obtener 3174 B de archivos.Después de esta operación, se utilizarán 1049 kB de espacio adicional en disco.ADVERTENCIA:¡Los siguientes paquetes no se pueden autenticar! linuxconfig ¿Instalar estos paquetes sin verificación [y/N]? y
Ejecutar:
$linuxconfiglinuxconfig.org
Para eliminar el paquete del sistema, simplemente ejecute:
1049 Se liberarán kB de espacio en disco. ¿Desea continuar? [S/n] s