usar todos tienes repositorio qué que para paquete los instalo instalar descomprimir cómo comando archivos abrir rpm rpmbuild

todos - ¿Cuál es el mínimo que tengo que hacer para crear un archivo RPM?



para instalar todos los archivos.rpm de un repositorio qué comando tienes que usar (9)

Solo quiero crear un archivo RPM para distribuir mi binario "foobar" de Linux, con solo un par de dependencias. Tiene un archivo de configuración, /etc/foobar.conf y debe instalarse en / usr / bin / foobar.

Lamentablemente, la documentación para RPM tiene 27 capítulos y realmente no tengo un día para sentarme y leer esto, porque también estoy ocupado creando instaladores .deb y EXE para otras plataformas.

¿Cuál es el mínimo absoluto que tengo que hacer para crear un RPM? Supongamos que foobar binary y foobar.conf están en el directorio de trabajo actual.


Para la construcción rápida de RPM, echa un vistazo a Togo:

https://github.com/genereese/togo-rpm

El proyecto tiene una guía de inicio rápido y pude crear un RPM básico en menos de 3 minutos.

Ejemplo utilizando los datos proporcionados en la pregunta original:

1) Crea el directorio del proyecto usando la secuencia de comandos:

$ togo project create foobar; cd foobar

2) Realice la estructura de directorios deseada en ./root y copie sus archivos en ella:

$ mkdir -p root/etc; cp /path/to/foobar.conf root/etc/ $ mkdir -p root/usr/bin; cp /path/to/foobar root/usr/bin/

3) Excluya los directorios propiedad del sistema de la propiedad de su RPM:

$ togo file exclude root/etc root/usr/bin

4) (OPCIONAL) Modifique la especificación generada para cambiar su descripción / dependencias / versión / lo que sea, etc.

$ vi spec/header

5) Construye las RPM:

$ togo build package

-y tu RPM es escupido en el directorio ./rpms.


A menudo hago rpm binarias por cada paquete de aplicaciones propietarias, también más como websphere, en Linux. Así que mi experiencia podría ser útil también para ti, además de que sería mejor hacer un RPM VERDADERO si puedes. Pero yo divago.

Así que el paso básico para empaquetar su programa (binario) es el siguiente, en el que supongo que el programa es toybinprog con la versión 1.0, tener una configuración para ser instalada en /etc/toybinprog/toybinprog.conf y tener un contenedor para instalar en / usr / bin llamado tobinprog:

1. crea tu entorno de compilación de rpm para RPM <4.6,4.7

mkdir -p ~/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp} cat <<EOF >~/.rpmmacros %_topdir %(echo $HOME)/rpmbuild %_tmppath %{_topdir}/tmp EOF cd ~/rpmbuild

2. crea el tarball de tu proyecto

mkdir toybinprog-1.0 mkdir -p toybinprog-1.0/usr/bin mkdir -p toybinprog-1.0/etc/toybinprog install -m 755 toybinprog toybinprog-1.0/usr/bin install -m 644 toybinprog.conf toybinprog-1.0/etc/toybinprog/ tar -zcvf toybinprog-1.0.tar.gz toybinprog-1.0/

3. Copia al directorio de fuentes

cp toybinprog-1.0.tar.gz SOURCES/ cat <<EOF > SPECS/toybinprog.spec # Don''t try fancy stuff like debuginfo, which is useless on binary-only # packages. Don''t strip binary too # Be sure buildpolicy set to do nothing %define __spec_install_post %{nil} %define debug_package %{nil} %define __os_install_post %{_dbpath}/brp-compress Summary: A very simple toy bin rpm package Name: toybinprog Version: 1.0 Release: 1 License: GPL+ Group: Development/Tools SOURCE0 : %{name}-%{version}.tar.gz URL: http://toybinprog.company.com/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root %description %{summary} %prep %setup -q %build # Empty section. %install rm -rf %{buildroot} mkdir -p %{buildroot} # in builddir cp -a * %{buildroot} %clean rm -rf %{buildroot} %files %defattr(-,root,root,-) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf %{_bindir}/* %changelog * Thu Apr 24 2009 Elia Pinto <[email protected]> 1.0-1 - First Build EOF

4. construir la fuente y las rpm binarias

rpmbuild -ba SPECS/toybinprog.spec

Y eso es todo.

Espero que esto ayude



Del mismo modo, necesitaba crear un rpm con solo unos pocos archivos. Como estos archivos estaban controlados por la fuente, y porque parecían tontos, no quería pasarlos por alto para que las rpm los liberaran. Se me ocurrió lo siguiente:

  1. Configura tu entorno:

    mkdir -p ~/rpm/{BUILD,RPMS}

    echo ''%_topdir %(echo "$HOME")/rpm'' > ~/.rpmmacros

  2. Cree su archivo de especificaciones, foobar.spec, con los siguientes contenidos:

    Summary: Foo to the Bar Name: foobar Version: 0.1 Release: 1 Group: Foo/Bar License: FooBarPL Source: %{expand:%%(pwd)} BuildRoot: %{_topdir}/BUILD/%{name}-%{version}-%{release} %description %{summary} %prep rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/bin mkdir -p $RPM_BUILD_ROOT/etc cd $RPM_BUILD_ROOT cp %{SOURCEURL0}/foobar ./usr/bin/ cp %{SOURCEURL0}/foobar.conf ./etc/ %clean rm -r -f "$RPM_BUILD_ROOT" %files %defattr(644,root,root) %config(noreplace) %{_sysconfdir}/foobar.conf %defattr(755,root,root) %{_bindir}/foobar

  3. Construye tus rpm: rpmbuild -bb foobar.spec

Hay un pequeño hacker allí especificando la ''fuente'' como su directorio actual, pero parecía mucho más elegante que la alternativa, que era, en mi caso, escribir un script separado para crear un tarball, etc., etc.

Nota: En mi situación particular, mis archivos estaban organizados en carpetas de acuerdo a dónde tenían que ir, así:

./etc/foobar.conf ./usr/bin/foobar

y entonces la sección de preparación se convirtió en:

%prep rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT cd $RPM_BUILD_ROOT tar -cC %{SOURCEURL0} --exclude ''foobar.spec'' -f - ./ | tar xf -

Que es un poco más limpio.

Además, resulta que estoy en un RHEL5.6 con rpm versiones 4.4.2.3, por lo que su kilometraje puede variar.


Forma fácil de compilar un paquete de rpm a partir de binario (estos pasos se probaron con Fedora 18):

1) Primero tienes que instalar rpmdevtools, así que ejecuta estos comandos (atención: ejecuta como usuario normal)

$ sudo yum install rpmdevtools rpmlint $ rpmdev-setuptree

2) En la carpeta ~ / rpmbuild / SPECS crea un nuevo archivo: package_name.spec

3) Ábralo con un editor (como gedit) y escriba esto:

Name: package_name Version: 1.0 Release: 1 Summary: Short description (first char has to be uppercase) License: GPL URL: www. your_website/ BuildRequires: package_required >= (or ==, or <=) 1.0.3 (for example) %description Description with almost 79 characters (first char has to be uppercase) #This is a comment (just as example) %files /usr/bin/binary_file.bin /usr/share/applications/package_name.desktop /usr/share/pixmaps/package_name.png %changelog * date Packager''s Name <packager''s_email> version-revision - Summary of changes #For more details see: docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/Packagers_Guide/sect-Packagers_Guide-Creating_a_Basic_Spec_File.html

4) Haga ~ / rpmbuild / BUILDROOT / package_name-version-release.i386 y reproduzca las rutas donde se colocarán los archivos. En este caso, por ejemplo, cree:

  • ~ / rpmbuild / BUILDROOT / package_name-version-release.i386 / usr / bin /
  • ~ / rpmbuild / BUILDROOT / package_name-version-release.i386 / usr / share / applications /
  • ~ / rpmbuild / BUILDROOT / package_name-version-release.i386 / usr / share / pixmaps /

5) Coloque en estas carpetas los archivos que desea insertar en el paquete:

  • ~ / rpmbuild / BUILDROOT / package_name-version-release.i386 / usr / bin / binary_file.bin
  • ~ / rpmbuild / BUILDROOT / package_name-version-release.i386 / usr / share / applications / package_name.desktop
  • ~ / rpmbuild / BUILDROOT / package_name-version-release.i386 / usr / share / pixmaps / package_name.png

usr / share / pixmaps / package_name.png es el icono de usario binario / share / applications / package_name.desktop son las reglas para insertar el programa en las entradas del menú

6) package_name.desktop debe ser así:

[Desktop Entry] Encoding=UTF-8 Type=Application Name=example GenericName=Short description Comment=Comment of the application Exec=package_name Icon=package_name Terminal=false Categories=System;

Las categorías son las siguientes: standards.freedesktop.org/menu-spec/latest/apa.html

7) Ejecute $ rpmbuild -bb ~/rpmbuild/SPECS/package_name.spec

8) Tu paquete está integrado en la carpeta ~ / rpmbuild / RPMS

si instala este paquete, es la instalación:

  • /usr/bin/binary_file.bin
  • /usr/share/applications/package_name.desktop
  • /usr/share/pixmaps/package_name.png

Gracias a: losurs.org/docs/tips/redhat/binary-rpms

Para obtener más detalles sobre la creación de rpm, consulte este enlace .

Software GUI java para construir rpm: https://sourceforge.net/projects/javarpmbuilder/


Los RPM generalmente se crean a partir de la fuente, no de los binarios.

Necesita escribir el archivo de especificaciones que cubre cómo configurar y compilar su aplicación; también, qué archivos incluir en su RPM.

Un rápido vistazo al manual muestra que la mayoría de lo que necesita está cubierto en el Capítulo 8; también, como la mayoría de las distribuciones basadas en RPM tienen fuentes disponibles, hay literalmente un trillón de ejemplos de diferentes enfoques que podría considerar.


Proceso de generación de RPM desde el archivo fuente:

  1. descargar el archivo fuente con extensión gz.
  2. instale rpm-build y rpmdevtools desde yum install. (Se generará la carpeta rpmbuild ... Se generarán las carpetas SPECS, SOURCES, RPMS .. dentro de la carpeta rpmbuild).
  3. copia el código fuente.gz a la carpeta SOURCES. (rpmbuild / SOURCES)
  4. Deshazte de la bola de alquitrán usando el siguiente comando. vaya a la carpeta FUENTES: rpmbuild / SOURCES donde está presente el archivo tar. comando: por ejemplo tar -xvzf httpd-2.22.tar.gz httpd-2.22 carpeta se generará en la misma ruta.
  5. vaya a la carpeta extraída y luego escriba debajo del comando: ./configure --prefix = / usr / local / apache2 --with-included-apr --enable-proxy --enable-proxy-balanceador --with-mpm = worker - -enable-mods-static = all (.configure puede variar de acuerdo con la fuente para la cual RPM tiene que construir-- He hecho para apache HTTPD que necesita apr y apr-util paquete de dependencia).
  6. ejecute el comando debajo de la vez que la configuración sea exitosa: haga
  7. después de la ejecución exitosa od make make run: checkinstall en la misma carpeta. (si no tiene el software checkinstall, descargue la última versión del sitio) También compruebe que el software de instalación tiene errores que pueden resolverse de la siguiente manera ::::: localizar checkinstallrc y luego reemplazar TRANSLATE = 1 a TRANSLATE = 0 usando el comando vim. También verifique si el paquete excluye: EXCLUDE = "/ selinux"
  8. checkinstall pedirá la opción (escriba R si desea tp rpm de compilación para el archivo fuente)
  9. El archivo .rpm listo se compilará en la carpeta RPMS dentro del archivo rpmbuild / RPMS ... TODO LO MEJOR ...

Si make config funciona para su programa o si tiene un script de shell que copia sus dos archivos en el lugar apropiado, puede usar checkinstall . Simplemente vaya al directorio donde está su archivo MAKE y llámelo con el parámetro -R (para RPM ) y opcionalmente con el script de instalación.


Si está familiarizado con Maven, también tiene rpm-maven-plugin que simplifica la creación de RPM: solo debe escribir pom.xml que luego se usará para generar RPM. El plugin crea implícitamente el entorno de compilación RPM.