GNU/Linux >> Tutoriales Linux >  >> Debian

Manera fácil de crear un paquete Debian y un repositorio de paquetes local

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.

En este tutorial aprenderás:

  • Cómo crear un paquete debian trivial
  • Cómo crear un repositorio local de Debian
  • Cómo agregar el repositorio a la lista de fuentes de software


Requisitos de software y convenciones utilizadas

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
Debian
  1. Cómo crear un repositorio local de Red Hat

  2. Cómo crear un repositorio YUM local en CentOS 7 / RHEL 7 usando DVD

  3. La manera fácil de instalar y eliminar un grupo de paquetes en Arch Linux

  4. Debian:¿crear un paquete .deb solo con dependencias?

  5. Debian – ¿Seguridad del repositorio de Debian?

Cómo agregar un repositorio a Debian

Una manera fácil de encontrar oportunidades para realizar contribuciones a los paquetes de Debian

Cómo crear y ejecutar un script de Shell en Debian 10

Cómo crear y editar archivos PDF en Debian 10

Comprobar las dependencias de un paquete en Ubuntu 20.04 y Debian 10

¿Una manera fácil de crear un acceso directo de escritorio?

    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