Je veux juste créer un fichier RPM pour distribuer mon "foobar" binaire Linux, avec seulement quelques dépendances. Il a un fichier de configuration, /etc/foobar.conf et devrait être installé dans/usr/bin/foobar.
Malheureusement, le documentation pour RPM compte 27 chapitres et je n'ai vraiment pas une journée pour lire et lire ceci, car je suis également occupé à créer des installateurs .deb et EXE pour d'autres plates-formes.
Quel est le minimum absolu que je dois faire pour créer un RPM? Supposons que le binaire foobar et le fichier foobar.conf se trouvent dans le répertoire de travail en cours.
Je fais souvent des rpm binaires par packaging d'applications propriétaires - également sous forme de websphere - sous Linux. Donc, mon expérience pourrait être utile aussi à vous, outre qu'il serait préférable de faire un VRAI RPM si vous le pouvez. Mais je m'égare.
Donc, une étape de base pour empaqueter votre programme (binaire) est la suivante - dans lequel je suppose que le programme est toybinprog avec la version 1.0, un conf à installer dans /etc/toybinprog/toybinprog.conf et un dossier à installer dans/usr/bin appelé tobinprog:
mkdir -p ~/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}
cat <<EOF >~/.rpmmacros
%_topdir %(echo $HOME)/rpmbuild
%_tmppath %{_topdir}/tmp
EOF
cd ~/rpmbuild
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/
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
rpmbuild -ba SPECS/toybinprog.spec
Et c'est tout.
J'espère que cette aide
En tant que distributeur d’applications, fpm semble parfait pour vos besoins . Il y a n exemple ici qui montre comment conditionner une application à partir des sources. FPM peut produire des fichiers deb et des fichiers RPM.
https://github.com/genereese/togo-rpm
Le projet contient un guide de démarrage rapide et j'ai pu créer un RPM de base en moins de 3 minutes.
1) Créez le répertoire du projet en utilisant le script:
$ togo project create foobar; cd foobar
2) Créez la structure de répertoires souhaitée sous ./root et copiez-y vos fichiers:
$ mkdir -p root/etc; cp /path/to/foobar.conf root/etc/
$ mkdir -p root/usr/bin; cp /path/to/foobar root/usr/bin/
3) Excluez les répertoires appartenant au système de la propriété de votre RPM:
$ togo file exclude root/etc root/usr/bin
4) (FACULTATIF) Modifiez la spécification générée pour modifier la description/les dépendances de votre paquet, la version, etc., etc.:
$ vi spec/header
5) Construire le RPM:
$ togo build package
-et votre RPM est craché dans le répertoire ./rpms.
De même, je devais créer un rpm avec seulement quelques fichiers. Étant donné que ces fichiers étaient contrôlés par la source et que cela semblait idiot, je ne voulais pas les tarir simplement pour que RPM les décompresse. Je suis venu avec ce qui suit:
Configurez votre environnement:
mkdir -p ~/rpm/{BUILD,RPMS}
echo '%_topdir %(echo "$HOME")/rpm' > ~/.rpmmacros
Créez votre fichier de spécification, foobar.spec, avec le contenu suivant:
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
Construisez votre régime: rpmbuild -bb foobar.spec
Il y a un petit hackery qui spécifie la "source" comme répertoire actuel, mais cela semblait beaucoup plus élégant que l'alternative qui consistait, dans mon cas, à écrire un script séparé pour créer une archive, etc., etc.
Remarque: dans ma situation particulière, mes fichiers étaient classés dans des dossiers en fonction de l'endroit où ils devaient aller, comme ceci:
./etc/foobar.conf
./usr/bin/foobar
et ainsi la section de préparation est devenue:
%prep
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT
cd $RPM_BUILD_ROOT
tar -cC %{SOURCEURL0} --exclude 'foobar.spec' -f - ./ | tar xf -
Ce qui est un peu plus propre.
De plus, je suis sur une RHEL5.6 avec les versions 4.4.2.3, alors votre kilométrage peut varier.
Si make config
fonctionne pour votre programme ou si vous avez un script shell qui copie vos deux fichiers à l’emplacement approprié que vous pouvez utiliser checkinstall . Allez simplement dans le répertoire où se trouve votre makefile et appelez-le avec le paramètre -R
(pour [~ # ~] rpm [~ # ~] ) et éventuellement avec le script d'installation.
Un moyen facile de construire le paquetage rpm à partir de binaires (ces étapes ont été testées avec Fedora 18):
1) Vous devez d’abord installer rpmdevtools, lancez donc ces commandes (attention: exécutez en tant qu’utilisateur normal)
$ Sudo yum install rpmdevtools rpmlint
$ rpmdev-setuptree
2) Dans le dossier ~/rpmbuild/SPECS, créez un nouveau fichier: nom_package.spec.
3) Ouvrez-le avec un éditeur (comme gedit) et écrivez ceci:
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) Fabriquez ~/rpmbuild/BUILDROOT/nom_package-version-release.i386 et reproduisez les chemins où les fichiers seront placés. Dans ce cas par exemple, créez:
5) Mettez dans ces dossiers les fichiers que vous voulez insérer dans le paquet:
usr/share/pixmaps/nom_package.png est l'icône binaire usr/share/applications/nom_package.desktop sont les règles permettant d'insérer le programme dans les entrées de menu
6) nom_package.desktop doit être comme ceci:
[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;
Les catégories sont les suivantes: standards.freedesktop.org/menu-spec/latest/apa.html
7) Run $ rpmbuild -bb ~/rpmbuild/SPECS/package_name.spec
8) Votre paquet a été construit dans le dossier ~/rpmbuild/RPMS
si vous installez ce paquet c'est installer:
Merci à: losurs.org/docs/tips/redhat/binary-rpms
Pour plus de détails sur la construction de tr/min, jetez un œil à ceci lien .
Interface utilisateur graphique Java permettant de générer rpm: https://sourceforge.net/projects/javarpmbuilder/