GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear un repositorio rpm personalizado en Linux

RPM es el acrónimo de RPM Package Manager :es el administrador de paquetes de bajo nivel en uso en toda la familia de distribuciones de Red Hat, como Fedora y Red Hat Enterprise Linux.

Un paquete rpm es un paquete que contiene software que debe instalarse mediante este sistema de administración de paquetes, y los paquetes rpm generalmente se distribuyen a través de repositorios de software. En este tutorial aprendemos cómo crear un repositorio rpm personalizado y cómo configurar nuestra distribución para usarla como fuente de software.

En este tutorial aprenderás :

  • Cómo crear un repositorio rpm
  • Cómo utilizar el repositorio como fuente de software

Requisitos de software y convenciones utilizadas

Instalación de software

Por el bien de este tutorial, crearemos nuestro repositorio personalizado en una máquina local con IP 192.168.0.39 que usará como un servidor http. En esta máquina, lo primero que debemos hacer es instalar el createrepo paquete. La distribución instalada en la máquina remota no necesita ser una distribución basada en rpm, siempre que dicho paquete esté disponible. En nuestro caso, por ejemplo, el sistema instalado en el servidor es Debian, por lo que para instalar el paquete necesitamos ejecutar el siguiente comando:

$ sudo apt-get update && sudo apt-get install createrepo

Como dijimos antes, en nuestro ejemplo específico queremos hacer que el software alojado en nuestro repositorio personalizado sea accesible a través del protocolo HTTP, por lo que necesitamos instalar un servidor HTTP; en este caso trabajaremos con Apache. Instalarlo en Debian, es solo cuestión de ejecutar:

$ sudo apt-get install apache2

Una vez que los paquetes están instalados, podemos continuar y crear nuestro repositorio rpm en unos pocos pasos muy simples.

Creando el repositorio

El Apache VirtualHost predeterminado DocumentRoot creado cuando Apache está instalado en Debian es /var/www/html . En este punto, podemos optar por crear un VirtualHost para nuestro repositorio, o simplemente crear el directorio del repositorio como parte
del predeterminado. En aras de la simplicidad, en este tutorial exploraremos la última opción:

$ sudo mkdir /var/www/html/repo

El repo directorio que creamos con el comando anterior, dentro del VirtualHost predeterminado DocumentRoot , alojará nuestros paquetes y será la base de nuestro repositorio. Para estructurarlo mejor, ahora queremos crear algunos subdirectorios
con el nombre de la distribución, su versión y la arquitectura de los paquetes que queremos que estén disponibles. Supongamos, por ejemplo, que queremos usar el repositorio en Fedora 33 x68_64 , debemos ejecutar el siguiente comando:

$ sudo mkdir -p /var/www/html/repo/fedora/releases/33/x86_64

El siguiente paso consiste en poblar el repositorio. Todo lo que tenemos que hacer es colocar los paquetes que queremos que estén disponibles, dentro del directorio del repositorio apropiado. En este caso, como ejemplo, llenaré el repositorio con un paquete obtenido al compilar el editor VSCode desde la fuente. El paquete se llama code-1.56.0-1617183449.el8.x86_64.rpm . Una vez copiado, nuestra estructura de archivos debería verse así:

repo
└── fedora
    └── releases
        └── 33
            └── x86_64
                └── code-1.56.0-1617183449.el8.x86_64.rpm

Con nuestro repositorio poblado, todo lo que queremos hacer es ejecutar createrepo comando dentro del directorio que contiene los paquetes. En este caso ejecutaríamos:

$ sudo createrepo /var/www/html/repo/fedora/releases/33/x86_64

El comando creará los metadatos del repositorio dentro de un directorio llamado repodata , en función de los paquetes contenidos en el directorio de destino y debe reiniciarse cada vez que se actualiza el repositorio con nuevos paquetes o se eliminan paquetes antiguos. Una vez que se inicia el comando, nuestra estructura de directorios se verá así:

repo
└── fedora
    └── releases
        └── 33
            └── x86_64
                ├── code-1.56.0-1617183449.el8.x86_64.rpm
                └── repodata
                    ├── 22ab1d1d123bb7d7cde556bf8a8ac4daf9cdb75572f40ebdd2f399908cb7f6b9-other.xml.gz
                    ├── 26ed9b63868b2e0263dfa817e21921c4e7542c1be9f6b7875381bba6bd78d1c6-primary.sqlite.bz2
                    ├── 50fc300a761812761cf9a8413a619da23cf336d49999753568ce19a97c025d44-other.sqlite.bz2
                    ├── a523f54b5fcd0720c182969f991f51e125728a361f31237725dc9418d5e126ea-primary.xml.gz
                    ├── af2fa9ea5deaffca5ffc9f3e524155defa8cfa5656962845a45c8b0e984f3e19-filelists.sqlite.bz2
                    ├── f95849cf860f1184b97d30000ea1f9f1c35edd6d625dcd387453187510dd4a18-filelists.xml.gz
                    └── repomd.xml

Nuestro repositorio fue creado con éxito. Ahora tenemos que configurar nuestra distribución para usarla como fuente de software.

Agregar el repositorio como fuente de software

Pasemos a nuestra distribución basada en rpm y veamos cómo configurarla para usar nuestro repositorio personalizado como fuente de software. Los archivos de configuración del repositorio se encuentran en /etc/yum.repos.d directorio, y debe tener el
.repo extensión. Mirando dentro del directorio podemos ver los ya existentes:

$ ls /etc/yum/repos.d
fedora-cisco-openh264.repo   fedora-updates-testing-modular.repo
fedora-modular.repo          fedora-updates-testing.repo
fedora.repo                  rpmfusion-free.repo
fedora-updates-modular.repo  rpmfusion-free-updates.repo
fedora-updates.repo          rpmfusion-free-updates-testing.repo

Ahora, creemos nuestra configuración de repositorio personalizada. Dentro del expediente, como conjunto mínimo de información, debemos proporcionar:

  • La identificación del repositorio
  • El nombre del repositorio
  • Una URL base del repositorio
  • El estado del repositorio
  • Si verificar la firma gpg de los paquetes o no

Guardaremos dicha información en un archivo llamado ownrepo.repo , aquí está su contenido:

[ownrepo]
name=Own repository
baseurl=http://192.168.0.39/repo/fedora/releases/$releasever/$basearch
enabled=1
gpgcheck=0

La definición informada entre corchetes ([ownrepo] ) es el ID del repositorio y debe ser único en todas las definiciones de repositorio. Con el name key proporcionamos un nombre legible por humanos para el repositorio como una cadena. Esto es opcional; si no se proporciona un nombre, la ID del repositorio también se usará como nombre.

Con el baseurl key especificamos una lista de URL para el repositorio. Las URL deben estar separadas por un espacio o una coma. En nuestro ejemplo, solo proporcionamos una sola URL, pero puede notar que usamos dos variables:

  • $releasever
  • $basearch

La expansión del primero, $releasever , dará como resultado la versión de lanzamiento del sistema operativo, en este caso 33 , ya que estamos instalando nuestro repositorio en un sistema Fedora 33. La segunda variable, $basearch , se expandirá en una cadena que representa la arquitectura base del sistema, que en nuestro caso es x86_64 .

El enabled la clave requiere un booleano valor que determina si el repositorio debe considerarse activo o no. La última clave que usamos es gpgcheck :también requiere un valor booleano y se utiliza para determinar si se debe realizar una verificación de firma gpg en los paquetes instalados desde el repositorio. En nuestro ejemplo, simplemente deshabilitamos la verificación, ya que el repositorio es solo para uso personal.

Ahora que nuestro repositorio está configurado, podemos intentar instalar el code paquete de él, simplemente ejecutando:

$ sudo dnf install code
Own repository                                                                    451 kB/s |  13 kB     00:00
Dependencies resolved.
==================================================================================================================
 Package              Architecture           Version                                Repository               Size
==================================================================================================================
Installing:
 code                 x86_64                 1.56.0-1617183449.el8                  ownrepo                 100 M

Transaction Summary
==================================================================================================================
Install  1 Package

Total download size: 100 M
Installed size: 294 M
Is this ok [y/N]:

Una vez que proporcionemos una respuesta afirmativa al aviso y lo confirmemos, el paquete se instalará en nuestro sistema.

Conclusiones

En este artículo aprendimos lo fácil que es crear un repositorio rpm personalizado con createrepo utilidad, y vimos cómo crear un archivo de configuración dnf en nuestra distribución para usarlo como fuente de software. Vimos un subconjunto mínimo de
las claves que se pueden usar en la configuración del repositorio; para obtener una lista más detallada, puede consultar la documentación oficial de dnf.


Linux
  1. Cómo construir paquetes rpm

  2. Cómo configurar el repositorio YUM en Linux/Centos/Redhat | YUM en Linux/Centos/Redhat

  3. Cómo crear un paquete RPM de Linux

  4. Cómo crear una rotación de archivo de registro personalizada por logrotate en Linux

  5. ¿Cómo crear comandos personalizados en Unix/Linux?

Cómo crear enlaces simbólicos en Linux

Cómo crear un archivo en Linux

Cómo crear accesos directos en el escritorio de Linux

Cómo crear un montaje a partir de imágenes en Linux

Cómo crear un alias SSH en Linux

Cómo crear un alias en Linux

    Requisitos de software y convenciones de la línea de comandos de Linux
    Categoría Requisitos, convenciones o versión de software utilizada
    Sistema Cualquier distribución de la familia Red Hat
    Software dnf, crear repositorio
    Otro Privilegios administrativos para configurar el repositorio
    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