Cómo crear un paquete GNU Hello World RPM en Fedora
- 3003
- 255
- Sr. Eduardo Menchaca
RPM (un acrónimo recursivo para RPM Package Manager) es un sistema de administración de paquetes gratuito y de código abierto para Linux. Aunque se creó originalmente para su uso en Red Hat Linux, ahora se usa en muchas distribuciones de Linux como Cento, Fedora, y Usura de apertura. Es importante destacar que el nombre RPM se refiere al programa Administrador de paquetes y al .rpm
es un formato de archivo.
En este artículo, explicaremos sobre la redacción de archivos RPM, que muestran cómo crear fácilmente paquetes de software de origen y software binario, por ejemplo,, GNU "Hola mundo" Paquete RPM en Fedora Linux distribución. Asumimos que tiene una comprensión básica de los paquetes de RPM prefabricados, y con el proceso gratuito de construcción de software de código abierto.
Instalación de herramientas de desarrollo en Fedora
Comencemos configurando el entorno de desarrollo en Fedora Linux ejecutando el siguiente comando para instalar las herramientas necesarias para construir RPMS.
$ sudo DNF Instalar Fedora-Packager @Development-ToolsInstalación de herramientas de desarrollo en Fedora
A continuación, agregue su cuenta no privilegiada al 'imitar'Grupo de la siguiente manera (reemplazar tecmenta con su nombre de usuario real). Esto le permitirá probar el procedimiento de compilación en un chroot limpio.
$ sudo usermod -a -g simulando tecmint
Ahora, cree una construcción de rpm en su ~/rpmbuild
directorio y verifique la compilación utilizando los siguientes comandos. Mostrará una lista de subdirectorios, que contiene código fuente del proyecto, archivos de configuración de RPM y paquetes binarios.
$ rpmdev-setuptree $ tree ~/rpmbuild/Crear entorno de compilación
Esto es para lo que es cada directorio:
- CONSTRUIR - almacena varios %de directorios BuildRoot cuando se construyen los paquetes.
- Rpms - contendrá RPM binarios en subdirectorios de la arquitectura.
- FUENTES - almacena archivos de origen comprimido y cualquier parche, aquí es donde el comando rpmbuild los buscará.
- ESPECIFICACIONES - almacena los archivos de especificaciones.
- SRPMS - almacena las rpm de origen en lugar de una rpm binaria.
Construyendo una RPM "Hello World"
En este paso, debe descargar el código fuente (también conocido como el "río arriba"Fuente) del Proyecto Hello World estamos empaquetando, en el ~/rpmbuild/fuente directorio con el siguiente comando wget.
$ cd ~/rpmbuild/fuentes $ wget http: // ftp.ñu.org/gnu/hello/hello-2.10.alquitrán.gz -p ~/rpmbuild/fuentes
A continuación, configuremos el paquete RPM utilizando un .Especificaciones
Archivo (nombrémonos Hola.Especificaciones
en este caso) en el ~/rpmbuild/especificaciones directorio, utilizando el rpmdev-newpec programa.
$ cd ~/rpmbuild/especificaciones $ rpmdev-newspec hola $ lsCrear archivo de Hello Spec
Luego abra el Hola.Especificaciones
Archivo usando su editor favorito.
$ vim hola.Especificaciones
La plantilla predeterminada debe verse así:
Nombre: Hello Versión: Release: 1%?Dist Resumen: Licencia: URL: Fuente0: BuildRequires: Requiere: %Descripción %Prep %AutoSETUP %Build %Configuración %Make_Build %Install RM -RF $ RPM_BUILD_ROOT %Make_Install %Archivos %Licencia Add-License-File- %Doc Add-------- Docs-Here %ChangeLog * Tue 28 de mayo de 2019 Aaron Kili
Expliquemos brevemente los parámetros predeterminados en un .Especificaciones
archivo:
- Nombre - Se usa para establecer un nombre para el paquete.
- Versión - Debería reflejar aguas arriba.
- Liberar - Números que trabajas dentro de Fedora.
- Resumen - es una breve descripción de una línea del paquete, la primera letra debe ser mayúscula para evitar quejas de rpmlint.
- Licencia - Verifique el estado de la licencia del software inspeccionando los archivos de origen y/o sus archivos de licencia, y/o hablando con los autores.
- Url - Especifica la página de inicio del paquete de software.
- Fuente0 - Especifica los archivos de origen. Puede ser una URL directa o una ruta del código fuente comprimido del software.
- BuildRequires - Especifica las dependencias necesarias para construir el software.
- Requerimiento - Especifica las dependencias necesarias para ejecutar el software.
- %deberes - se utiliza para crear el entorno para construir el paquete RPM.
- %construir - se usa para compilar y construir los códigos de origen.
- %instalar - Esto se usa para instalar los programas. Enumera el comando (s) necesario para copiar el archivo resultante del proceso de compilación al directorio de buildRoot.
- %de archivos - Esta sección enumera los archivos proporcionados por el paquete, que se instalará en el sistema.
- %ChangeLog - Debe almacenar el trabajo para preparar las RPM, especialmente si hay parches de seguridad y errores incluidos en la parte superior de la fuente aguas arriba. Se genera automáticamente mientras crea el hola.archivo de especificaciones. Los datos de ChangeLog generalmente se muestran por
RPM -CHANGELOG -Q
.
Ahora edita tu .Especificaciones
archivo y hacer cambios como se muestra.
Nombre: Hello Versión: 2.10 lanzamiento: 1%?Dist Resumen: El programa "Hello World" de la licencia GNU: GPLV3+ URL: http: // ftp.ñu.org/gnu/%name fuente0: http: // ftp.ñu.org/gnu/%name/%name-%versión.alquitrán.GZ BuildRequires: GetText Requerir (POST): Info Requiere (Preun): Info %Descripción El paquete del programa "Hello World" %Prep %AutoSETUP %Build %Configure Make %make_build %install %make_install %find_lang %name rm - f %buildroot/ %_ infodir/dir %post/sbin/install-Info %_ infodir/ %name.info %_ infodir/dir || : %preun if [$ 1 = 0]; Entonces/sbin/install-Info --elete %_ infodir/ %name.info %_ infodir/dir || : fi %archivos -f %name.lang %_ mandir/man1/hola.1.* %_ infodir/hola.información.*)
Notará que hemos utilizado algunos parámetros nuevos en el archivo anterior que no se han explicado. Estos se llaman macros, Se utiliza para construir invocaciones del sistema definidas por RPM para establecer rutas de instalación para paquetes. Por lo tanto, generalmente es preferible no codificar estas rutas en archivos de especificaciones tampoco, pero use las mismas macros para consistencia.
Las siguientes son macros RPM Build y Directory junto con sus definiciones y valores predeterminados:
- %make_build - se usa en el %construir Sección del archivo de especificaciones, ejecuta el comando Make.
- %nombre - Define el nombre del paquete o el directorio.
- %BuildRoot - %_ BuildRootDir/%name-%versión-%versión.%_ Arch, igual que $ buildroot
- %_ infodir - %_ DatarOotdir/info, predeterminado:/usr/share/info
- %_ mandir - %_ DatarOotdir/Man, predeterminado:/usr/share/man
- %_ bindir - %_ Exec_prefix/bin, default:/usr/bin
Tenga en cuenta que puede encontrar los valores para estos macros en el /usr/lib/rpm/plataforma/*/macros o consulte las pautas de empaque: Macros RPM.
Construyendo el paquete RPM
Para construir los paquetes de fuente, binarios y de depuración, ejecute el siguiente comando rpmbuild.
$ rpmbuild -ba hola.Especificaciones
Después del proceso de compilación, las rpms de origen y los testamentos de rpms binarios se crearán en el … /Srpms /
y … /Rpms /
directorios respectivamente. Puede usar el programa RPMLint para verificar y asegurarse de que el archivo de especificaciones y los archivos RPM creados cumplan con las reglas de diseño de RPM:
$ rpmlint hola.Spec…/srpms/hola*…/rpms/*/hola*Verifique los paquetes de los errores
Si hay algún error como se muestra en la captura de pantalla anterior, corríjalos antes de que pueda continuar.
Por último, pero no menos importante, usa programa simulado Para verificar que la compilación del paquete tenga éxito en el entorno de construcción restringida de Fedora.
$ Mock --verbose ... /srpms /hello-2.10-1.FC29.SRC.rpmVerifique la compilación del paquete RPM
Para obtener más información, consulte la documentación de Fedora: Creación de paquetes de RPM.
Eso es todo! En este artículo, hemos explicado cómo intensificar su sistema Fedora para crear un paquete de software de origen y software binario simples. También mostramos cómo crear un paquete de rpm rpm de la palabra de hola. Use el formulario de comentarios a continuación para comunicarse con nosotros para cualquier pregunta o comentario.
- « Comando de tiempo de actividad de Linux con ejemplos de uso
- Configuración de un servidor FTP seguro usando SSL/TLS en Ubuntu »