Aller au contenu

Mkd (Extracteur de documents)/Paquets 'RPM' Red Hat Package Manager

Un livre de Wikilivres.

Une version imprimable du livre « Maintenance des paquets RPM » est disponible.2016-03-19


Make documents


Exercice de construction d'un paquet rpm.link={{{link}}}

Cet exercice a pour but de se familiariser avec la construction d'un paquet de la famille Red Hat.

Cette page a été optimisée pour "Version imprimable". Si vous désirez imprimer cette page assurez-vous que les textes déroulants ne sont pas masqués.

Les paquets d'installation des logiciels pour les systèmes d'exploitation linux permettent de sécuriser les systèmes grâce à des clés numériques. Ils permettent aussi de faciliter l'installation des applications.
Il est à noter que les sources de mkd, sous forme d'archive compressée, sont compilables sans grand changement avec tous les systèmes d'exploitation; tous sytèmes UNIX, LINUX, WINDOWS.


Environnement de construction d'un paquet RPM

[modifier | modifier le wikicode]
Pour créer un paquet RPM il faut se doter des outils de construction
Nous nous sommes inspirés de recommandations disponibles sur Internet :Fedora-Fr - Communauté francophone Fedora - Linux[1]
Il est inutile de répéter ici ce qui est très bien fait sur le site fedora-fr
Vous devrez créer l'utilisateur builder, puis le répertoire ~/builder/rpmbuild/ contenant les répertoires BUILD, RPMS, SOURCES, SPECS, RPMS.

Notre exemple de fichier .rpmmacros

[modifier | modifier le wikicode]

C'est un exemple de fichier .rpmmacro pour un paquet personnel :

# File .rmpmacros for rpmbuild. 
# Used for personal distribution. Do not use this file for fedora building package

%_topdir %(echo $HOME)/rpmbuild

%__arch_install_post \
    [ "%{buildarch}" = "noarch" ] || QA_CHECK_RPATHS=1 ; \
    case "${QA_CHECK_RPATHS:-}" in [1yY]*) /usr/lib/rpm/check-rpaths ;; esac \
    /usr/lib/rpm/check-buildroot

%_smp_mflags %([ -z "$RPM_BUILD_NCPUS" ] \\\
    && RPM_BUILD_NCPUS="'/usr/bin/getconf _NPROCESSORS_ONLN'";\\\
    if [ "$RPM_BUILD_NCPUS" -gt 16 ]; then echo "-j16"; \\\
    elif [ "$RPM_BUILD_NCPUS" -gt 3 ]; then echo "-j$RPM_BUILD_NCPUS"; \\\
    else echo "-j3"; fi)

%vendor         EELL
%Packager       Edeulo <edeulo@free.fr>
%dist           .fc23
%fedora         23

%_signature gpg
%_gpg_path /home/builder/.gnupg
%_gpg_name JP Louyot

Notre exemple de fichier SPEC

[modifier | modifier le wikicode]
  1. Avec un éditeur comme gedit, créer un nouveau fichier que vous enregistrerez mkd.spec dans le répertoire ~/builder/rpmbuild/SPECS.
  2. Surligner le texte ci-dessous, le copier, puis le coller dans le fichier mkd.spec
Name:           mkd
Version:        140515
Release:        1%{?dist}
Summary:        Create and upgrade all documentations for softwares.
Group:          Development/tools
License:        EUPL or GNU
URL:            http://www.eell.fr/
Source0:        mkd_140515.tar.gz
Buildroot:      %{_tmppath]}/%{name}-%{version}-{release}-root-%({__id_u) -n)
#Buildarch:      

BuildRequires:  gettext
#Requires:       

%description 
- (en) mkd generate documentation for programmers and maintainers of software
- (fr) mkd génère de la documentation pour les programmeurs et les spécialistes de la maintenance de logiciels

%prep
%setup -q

%build

#Update mkd for new arch
make mkd

exit

%install
rm -rf $RPM_BUILD_ROOT
#%make_install
#mkdir -p $RPM_BUILD_ROOT/
# mkd only
#cp -rf usr/ $RPM_BUILD_ROOT/
# add mkddocu
#cp -rf src-mkddocu/usr/ $RPM_BUILD_ROOT/

%files
%defattr(-,root,root,-)
%doc AUTHORS COPYING HISTORY NEWS README
#/usr/bin/*

%post
touch --nocreate %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
 %{_bindir}/gtk-update-icon-cache -q %{_datadir}/icons/hicolor;
 fi
 update-mime-database %{_datadir}/mime &> dev/null || :
 update-desktop-database & > /dev/null || :
 
 %postun
 touch --nocreate %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
 %{_bindir}/gtk-update-icon-cache -q %{_datadir}/icons/hicolor;
 fi
 update-mime-database %{_datadir}/mime &> dev/null || :
 update-desktop-database & > /dev/null || :


%changelog
* Fri Jan 29 2016 builder

Créer le paquet

[modifier | modifier le wikicode]
Le fichier mkd.spec en place dans le répertoire SPECS
  1. Télécharger l'archive mkd_140515.tar.gz[2]
  2. Placer l'archive dans le répertoire ~builder/rpmbuild/SOURCES/
  3. Dans un terminal, lancer la commande rpmbuild -ba ~builder/rpmbuild/SPECS/mkd.spec

Les fichiers de reconstruction se trouvent dans le répertoire SRPM

Signer le paquet

[modifier | modifier le wikicode]

rpmsign --addsign paquet.rpm semble obsolète

Installer rpm-sign-4.13.0-0.rc1.7.fc23.x86_64.rpm

Installer le paquet

[modifier | modifier le wikicode]

Se connecter avec le nom d'utilisateur root ( Commande su )

Yum est obsolète dans les nouvelles versions, voir le manuel man yum2dnf et man dnf

dnf install  le paquet.rpm que vous avez créé ou importé

En cas de conflit pour un paquet non officiel :

rpm -ivh paquet.rpm --force


Reconstruction à partir des sources

[modifier | modifier le wikicode]
  1. Télécharger les sources mkd-140515-1.fc23.src.rpm de reconstruction[3]
  2. rpmbuild --rebuild le paquet src que vous avez téléchargé
Exemple :rebuild --rebuild mkd-140515-1.fc23.src.rpm


  1. Environnement de construction
  2. Télécharger l'archive mkd_140515.tar.gz
  3. mkd-140515-1-SOURCE-and-debuginfo