Outils pour utilisateurs

Outils du site


rpm

rpm et yum

Pour aller plus loin : https://wiki.centos.org/TipsAndTricks/YumAndRPM

Astuces d'utilisation du gestionnaire de paquet rpm/yum

Gérer les dépôts

Lister les dépôts: yum repolist Liste les paquets d'un dépôt particulier

sudo yum repository-packages  mysql57-community list

Dépendances

Afficher les paquets dont dépend un paquet:

#fedora
dnf repoquery --requires --resolve packagename
#centos/RH
repoquery --requires --resolve packagename

et si on a un paquet:

rpm -qp --requires package.rpm

queryformat

Permet de personnaliser les informations affichées par rpm / yum lors d'une interrogation

format d'étiquette

%{NAME}
%30{NAME} - 30 char AVANT l'étiquette
%-30{NAME} - 30 char APRÈS l'étiquete

afficher la liste des étiquettes disponibles

rpm --querytags

listes des paquets non officiels

rpm -qa --qf '%{NAME}\t%{VENDOR}\n'  | awk '{ if( $2 != "CentOS")print $0}'

listes des paquets sans la version

(pour les réinstaller suite à une mise à jour)

rpm -qa --queryformat '%{NAME} ' # ne pas oublier l'espace avant la guillement fermante

lister les paquets installés par l'utilisateur

yum (ou dnf) history userinstalled

Installer un paquet source

dnf download --source package_name

Travailler avec les transactions

lister les transactions

dnf history

détail d'une transaction

dnf list transaction_id

Annuler une transaction

installé → désinstallé (et réciproquement) mise à jour → downgradé

dnf undo transaction_id

</code> # vim: set filetype=dokuwiki:

dnf history

# vim: set filetype=dokuwiki:

Créer un dépôt local

  1. yum install createrepo
  2. mkdir -p /var/www/repo/CentOS/7/x86_64/local
  3. Récupérer l'image iso d'un dvd CentOS
  4. mount -o loop,ro imagedvd
  5. copier le contenu du répertoire Packages dans /var/www/repo/CentOS/7/x86_64/local
  6. Générer les métadata: createrepo /var/www/repo/CentOS/7/x86_64/local
  7. Générer le fichier de définition de dépôts:
**remarque**: //createrepo n'est pas indispensable, on peut partager directement le contenu du dvd

vim /etc/yum.repos.d/myrepo.conf
[local]
name=CentOS-$releasever - local packages for $basearch
baseurl=file:///var/www/CentOS/7/x86_64/local
enabled=1
gpgcheck=0
cost=100
  1. Vérifier - yum repolist
  2. On peut aussi faire un yum clean all puis un yum make cache

Voir comment la valeur du param cost modifie le listing de la commande yum repolist baseurl représente le répertoire contenant le fichier repomd.xml

Arborescence finale:

CentOS/7/x86_64/local/
|-- nmap-6.40-7.el7.x86_64.rpm
|-- nmap-frontend-6.40-7.el7.noarch.rpm
|-- nmap-ncat-6.40-7.el7.x86_64.rpm
`-- repodata
    |-- 2ce8c7c2dd58dee091f702c374852f6af6636031e0b0a129c541e7b4ba378380-other.xml.gz
    |-- 44b5a4d58c0768b687f91bc7c5e2adccc81ae28fae271157ee50a69a66a5a43b-filelists.sqlite.bz2
    |-- 5eb090df395c4ed76ff6da6733408f83ab29129f0f4def2c43cf432ad8bfd9ac-other.sqlite.bz2
    |-- d3cd4ce74f0afd4a1ef9abc0cfdede9b059f458daf7beee980357043b07f174d-primary.xml.gz
    |-- d63a84e4dceb0a1b6cdbe109cb1eae1dffddcdfc398f215147725071a263dee1-primary.sqlite.bz2
    |-- d77e1cdaee68c43213ec4f057fd99449014c9d0426d649581f7a167cc3c169ff-filelists.xml.gz
    `-- repomd.xml

1 directory, 10 files

Essayer : faire un yum install nmap #par exemple

S'assurer que dans la liste des paquets à télécharger, colonne Dépôt, on a bien notre dépôt personnel.

Publier le dépôt sur le réseau

- Installer apache - Configurer apache:

cat /etc/httpd/conf.d/repo.conf
Alias /repo /var/www/repo
<Directory /var/www/repo >
  require all granted
  Options indexes
</Directory>

- Configurer yum:

cat /etc/yum.repos.d/local.repo
[local]
name=CentOS-$releasever - local packages for $basearch
baseurl=http://SERVER/repo/CentOS/$releasever/$basearch/local
enabled=1
gpgcheck=0
cost=100

Synchroniser un dépôt local

La modification de la liste des paquets entraîne la mise à jour de la base de données locale

  1. yum install yum-utils
  2. reposync –delete –newest-only –download_path=/var/www/

attention: la commande reposync créé systématiquement un sous-répertoire local dans lequel sont téléchargés les paquets.

Créer un dépôt à partir de l'image iso

  • mount -o loop,ro image.iso m
  • firewall-cmd –add-service http
  • vim /etc/nginx/conf.d/repo.conf
server{
        listen 80 ;
        server_name cafeine 192.168.10.96 ;
        root /home/BigFiles/m ;
        location /home/BigFiles/m {
                autoindex on ;
        }
}
  • systemctl reload nginx
  • vim /etc/yum.repos.d/local.repo
[local]
name=CentOS-$releasever - local packages for $basearch
baseurl=http://192.168.10.96/                                                                                                                                                                                       
enabled=1
gpgcheck=0
cost=100

Extraire un paquet sans l'installer

Utiliser le plugin yum-downloadonly, le paquet sera téléchargé dans /var/cache/yum mais non (re)installé.

yum update --downloadonly nagios
mkdir nagios
cd nagios
rpm2cpio /var/cache/yum/x86_64/7/epel/packages/nagios-4.0.8-2.el7.x86_64.rpm| cpio -idmv

Recompiler un paquet

voir aussi rpmbuild

create a dedicated user

https://wiki.centos.org/HowTos/RebuildSRPM

L'objectif est de packager la dernière (4.1.1) version de nagios en utilisant les specs du paquet actuel (4.0.8)

en root:

yum install rpm-build yum-utils

yum-builddep nagios

En utilisateur normal:

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

yumdownloader –source nagios

rpm -i nagios*rpm

cd rpmbuild/SOURCES

curl -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz

in spec file:

  1. change version
  2. rpmbuild -bl PATHTOSPCFILE permet de vérifier la section %file
  3. rpmbuild -ba PATHTOSPECFILE - constater l'échec, causé par de légères différences dans les fichiers.
  4. corriger:
    1. comment out line #136 of spec file or use this patch
    2. comment out line #138 of spec file
    3. rajouter “%{_datadir}/%{name}/html/d3/d3.min.js” à la ligne 290 du specfile
  5. relancer la construction

Installer les paquets nagios et nagios-common depuis le répertoire RPMS/x86_64

remarque

il est plus simple de partir des sources officielles:

  1. sudo yum install rpm-build yum-utils
  2. mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
  3. cd rpmbuild/SOURCES
  4. tar xzf nagios-4.2.3.tar.gz nagios-4.2.3/nagios.spec
  5. mv nagios-4.2.3/nagios.specs ~/rpmbuild/SPECS/
  6. cd -
  7. rpmbuild -ba SPECS/nagios.spec
  8. repeat until all dependencies are solved
  9. installer les paquets construits dans RPMS

performance

refaire la manip pour construire le paquet nagios-plugins mauvaise idée, trop de boulot

rpm.txt · Dernière modification: 2017/04/06 14:28 (modification externe)