rpmbuild
es una herramienta de línea de comandos para crear paquetes RPM (Red Hat Package Manager). RPM es un formato estándar para instalar y administrar software en sistemas Linux. rpmbuild puede empaquetar código fuente o archivos binarios en paquetes RPM y configurar metadatos, dependencias, listas de archivos, etc. para ellos. rpmbuild está disponible en varias distribuciones de Linux como Red Hat, CentOS, Fedora, SUSE, Mageia, etc. Es una de las herramientas principales del proceso de construcción de RPM y los administradores y desarrolladores de sistemas la utilizan a menudo. La siguiente es una introducción al proceso de creación de paquetes rpm:
1. proceso de producción de paquetes rpm
1. Herramientas de instalación
# 编译工具
yum install -y gcc make
# rpm 包工作目录生成工具
yum install -y rpmdevtools
# rpm 包构建工具
yum install -y rpm-build
2. Cree un directorio de trabajo
2.1 Creación manual
mkdir -p ~/rpmbuild/{
BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
2.2 Creación de compilación rpmdevtools
Este comando generará un directorio rpmbuild, que es el entorno para crear paquetes rpm. Cabe señalar que este comando /root
solo efecto cuando el directorio rpmbuild exista y el directorio rpmbuild no se volverá a crear.
cd /root/
rpmdev-setuptree
cd rpmbuild && ls
BUILD RPMS SOURCES SPECS SRPMS
El propósito general de cada directorio se describe brevemente a continuación:
- CONSTRUIR directorio temporal para compilar paquetes rpm
- BUILDROOT El directorio de instalación temporal del software generado después de la compilación.
- El directorio donde se encuentra el paquete rpm instalable finalmente generado por RPMS.
- SOURCES Directorio donde se almacenan todo el código fuente y los archivos de parche.
- Directorio SPECS donde se almacenan los archivos SPEC (importante)
- La ruta de almacenamiento del formato de código fuente rpm final del software SRPMS
3. Preparación antes de realizar el paquete rpm.
3.1 Copie el paquete de código fuente o el código fuente al directorio SOURCES y compile el archivo binario del código fuente
Cuando el almacén existe, MakeFile compila el archivo binario mediante make y lo escribe cuando no existe.
3.2 Escriba el script de compilación.
Para escribir el script de especificaciones, consulte: https://blog.csdn.net/yuelai_217/article/details/130722081
y copie el script de especificaciones en el directorio SPECS.
4.Hacer paquete
rpmbuild -ba SPECS/xxx.spec
5. Verificación de la instalación
rpm -ivh xxx.rpm
2. comandos comunes de rpmbuild
2.1 formato básico rpmbuild
rpmbuild [options] [spec文档|tarball包|源码包]
rpmbuild -ba nginx.spec
2.2 Usar opciones de compilación de archivos de especificaciones
Opciones | significado |
---|---|
-pb | El lugar en el archivo antes de la ejecución de la instalación. |
-antes de Cristo | Ejecute las secciones %pre y %build de la especificación (preparar y compilar) |
-bi | Ejecute %pre, %build y %install en la especificación (preparar, compilar e instalar) |
-licenciado en Derecho | Verifique la sección %file en la especificación (verifique si el archivo está completo) |
-licenciado en Letras | Crear código fuente y paquetes binarios (de uso común) |
-cama y desayuno | Cree solo paquetes binarios (de uso común) |
-bs | Crear solo paquetes de código fuente |
2.3 Creación de paquete tarball, similar a la especificación
Construir usando tarball fuente
rpmbuild -tb xxx.zip
Opciones | significado |
---|---|
-tp | Corresponde a -pb |
-tc | Corresponde a -bc |
-de | Corresponde a -bi |
-frente a | Corresponde a -ba |
-tuberculosis | Corresponde a -bb |
-ts | Corresponde a -bs |
2.4 Crear desde el paquete fuente
Opciones | significado |
---|---|
-reconstruir | Para crear un paquete binario, pase -bb |
–buildroot=DIRECTORIO | Asegúrese de crear el paquete en el directorio raíz |
-limpio | Una vez completado el empaquetado, borre el directorio de archivos en CONSTRUIR |
–no construir | Sin fase de %construcción |
–nodos | No verifique los archivos asociados al crear un paquete |
–rmfuente | Borrar FUENTES después de completar el embalaje |
–rmspec | Borrar SPEC después de completar el embalaje |
–objetivo=CPU-VENDEDOR-OS | Determinar la plataforma de uso final del paquete. |
Documentación de referencia
1. https://www.shuzhiduo.com/A/D854Dy825E/
2, https://blog.51cto.com/pencild/1532569
3, https://www.cnblogs.com/Tzyyviki/p/14710479.html