Cómo modificar un paquete RPM usando rpmRebuild

Cómo modificar un paquete RPM usando rpmRebuild

Introducción

RPM es uno de los Administrador de paquetes GNU/Linux más avanzado. Creado por Red Hat, se usa en muchas distribuciones, como por ejemplo Fedora y derivados como Rhel y Centos.

Los paquetes que se instalarán con este Administrador de paquetes tienen el .rpm extensión y son básicamente archivos que contienen los archivos proporcionados por una biblioteca o una aplicación más información necesaria para que el paquete se instale y se ejecute correctamente, como sus dependencias. En este tutorial aprenderemos a usar rpmrebuild, Una herramienta muy poderosa que nos permite modificar un paquete RPM existente sin tener que reconstruirlo del código fuente.

Arreglar una dependencia faltante en el ejemplo del paquete Atom

En aras de este tutorial, solucionaremos un error real, afectando al oficial Átomo paquete de rpm editor. Atom depende de GCONF2, Sin embargo, este paquete se omite en la lista de dependencias incluidas las Especificaciones archivo.

Es posible que no se dé cuenta de esto si instala Atom en una instalación predeterminada de Fedora Workstation, desde el GCONF2 El paquete ya está instalado en el sistema (probablemente algún otro paquete lo requiere como dependencia).

Sin embargo, al instalar Atom en un entorno mínimo surgirá el problema: el paquete se instalará sin problemas, pero al intentar iniciar el editor, se mostrará el siguiente error:

/USR/Share/Atom/Atom: Error mientras carga bibliotecas compartidas: libgconf-2.entonces.4: No se puede abrir el archivo de objeto compartido: no hay dicho archivo o directorio

El libgconf-2.entonces.4 El objeto compartido es proporcionado por el GCONF2 Paquete, ya que podemos verificar fácilmente la emisión del siguiente comando Linux:

$ dnf whatprovide libgconf-2.entonces.4 GCONF2-3.2.6-20.FC28.i686: un sistema de configuración transparente de proceso Repo: Fedora coincidía con: Proporcionar: libgconf-2.entonces.4 

Solucionemos este error agregando la dependencia faltante en el archivo de especificaciones.



Paso 1 - Instalación de rpmReBuild

Lo primero que debemos hacer es instalar el rpmrebuild Paquete, que está disponible en los repositorios predeterminados de Fedora. El comando puede variar según si el usuario está en el rueda grupo, y por lo tanto podemos usar el comando sudo, o si queremos ejecutar el comando que cambia al usuario root, usando SU. Asumiré el primer caso aquí:

$ sudo dnf instalación rpmreBuild

Deje que DNF haga su trabajo, y pronto el paquete se instalará en nuestro sistema. En este punto, necesitamos recuperar el paquete Atom del sitio web oficial del proyecto. Lo usaremos como base para construir nuestras RPM personalizadas.

Paso 2 - Modificación del archivo de especificaciones

El Especificaciones El archivo de un paquete RPM contiene información vital sobre el paquete en sí, como sus dependencias y los archivos que proporciona: es este archivo que debemos modificar para solucionar este pequeño error. Suponiendo que estamos en el directorio donde descargamos el paquete Atom, podemos emitir el siguiente comando Linux:

$ rpmrebuild -enp átomo.x86_64.rpm

Invocamos el rpmrebuild Comando que proporciona tres opciones: -mi, -norte y -pag. Veamos brevemente para qué son. La primera opción, -mi es la versión corta de --specfile de edición Y es necesario decirle al programa que queremos editar la Fila de especificaciones del paquete; el segundo, -norte, versión corta de --Instalación de Notest Modifica el comportamiento del programa para que las RPM generadas no se instalen automáticamente al final del proceso de construcción.

Finalmente, usando el -pag o --paquete opción, especificamos que queremos usar un .rpm Archivo de paquete como la base de nuestra reconstrucción, en lugar de usar un RPM ya instalado.

Una vez que ejecutemos el comando anterior, el archivo de especificaciones se abrirá en una instancia de nuestro editor de texto predeterminado. En nuestro caso, lo que queremos hacer es agregar un Requerimiento cláusula, para incluir la dependencia faltante:

Requiere: LSB-Core-Noarch Requiere: GConf2 # Aquí está nuestra dependencia adicional requiere: libxss.entonces.1 () (64 bits) requiere: libsecret-1.entonces.0 () (64 bits) 

Además, podemos modificar la versión del paquete, para distinguir nuestra versión modificada de la oficial. Es muy simple: todo lo que necesitamos hacer es modificar la línea:



Lanzamiento: 0.1

En algo como:

Lanzamiento: 0.1_custom

Una vez que hayamos terminado, guardamos y cerramos el archivo: se mostrará un mensaje en nuestro terminal, preguntando si queremos continuar y construir el paquete modificado:

Quieres continuar ? (S/N)

Si damos una respuesta afirmativa y presionamos Entrar, el edificio comenzará (podría tardar un tiempo en terminar). Es importante notar que las RPM especificadas no se modificarán en su lugar, sino que se generará uno nuevo, según él. Al final del proceso, el nuevo RPM se ubicará en el $ Home/rpmbuild/rpms/x86_64/ directorio:

$ ls $ home/rpmbuild/rpms/x86_64/atom-1.27.0-0.1_custom.x86_64.rpm 

Para verificar que la dependencia se haya agregado correctamente, podemos usar RPM y consultar las nuevas dependencias del paquete:

$ rpm -qrp $ home/rpmbuild/rpms/x86_64/atom -1.27.0-0.1_custom.x86_64.rpm gconf2 libxss.entonces.1 () (64 bits) Libsecret-1.entonces.0 () (64 bits) LSB-Core-Noarch RPMLib (nombres de línea comprimidos) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1 

GCONF2 ahora está incluido en la lista de las dependencias del paquete. Esto se hace evidente cuando intentamos instalar el paquete: como siempre, se mostrará un resumen de las operaciones a realizar al instalar el paquete con DNF:



[…] ================================================= ================================= Package Arch Version Repository Size ============= ==================================================== ================== Instalación: Atom x86_64 1.27.0-0.1_custom @commandline 99 m Instalación de dependencias: GCONF2 X86_64 3.2.6-20.FC28 Fedora 1.0 m en x86_64 3.1.20-10.FC28 Fedora 80 K Cronie X86_64 1.5.1-9.FC28 Fedora 105 K Cronie-Anacron x86_64 1.5.1-9.FC28 Fedora 40 K Crontabs Noarch 1.11-16.20150630git.FC28 Fedora 24 K Ed X86_64 1.14.2-2.FC28 Fedora 80 K ESMTP X86_64 1.2-10.FC28 Fedora 57 K libxscrnsaver x86_64 1.2.2-14.FC28 Fedora 29 K libesmtp x86_64 1.0.6-14.FC28 Fedora 67 K Liblockfile X86_64 1.14-1.FC28 Fedora 30 k m4 x86_64 1.4.18-6.FC28 Fedora 221 K Mailx x86_64 12.5-28.FC28 actualizaciones 256 k ncurses-compat-libs x86_64 6.1-4.20180224.FC28 Fedora 331 K REDHAT-LSB-CORE X86_64 4.1-44.FC28 Fedora 44 K REDHAT-LSB-SUBMOD-SECURIDAD X86_64 4.1-44.FC28 Fedora 21 K Spax x86_64 1.5.3-12.FC28 Fedora 216 K Time X86_64 1.9-1.FC28 Fedora 53 K Util-Linux-User x86_64 2.32-2.FC28 Fedora 94 K Resumen de transacción ============================================== ==================================== Instalar 19 paquetes […] 

El paquete ahora se ejecutará correctamente, ya que todas sus dependencias de tiempo de ejecución están correctamente satisfechas.

Pensamientos finales

En este tutorial vimos cómo modificar un Especificaciones archivo de un paquete sin tener que reconstruirlo con el código fuente utilizando el rpmrebuild herramienta. Solucionamos un pequeño error, que consiste en una dependencia faltante en el paquete de RPM oficial de Atom.

Descargamos y usamos el paquete Atom oficial como la base de nuestra reconstrucción, sin embargo, con la misma herramienta es posible funcionar y modificar archivos que forman parte de un RPM ya instalado, para generar una nueva compilación que incluirá las modificaciones. Rpmrebuild es una herramienta muy útil y poderosa; La sugerencia, como siempre, es sumergirse en su manera para dominarlo desbloquear todo su potencial.

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Mastering Bash Script Loops
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cómo reconstruir un paquete utilizando el sistema de compilación Arch Linux
  • Bucles anidados en guiones Bash
  • Cómo consultar los paquetes de información con el paquete RPM ..
  • Cómo actualizar CentOS
  • Cómo migrar de Centos a Almalinux
  • Descarga de Linux