Outils pour utilisateurs

Outils du site


rpm

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

rpm [2017/04/06 14:28] (Version actuelle)
Ligne 1: Ligne 1:
 +
 +===== 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
 +<​code>​
 +sudo yum repository-packages ​ mysql57-community list
 +</​code>​
 +
 +=== Dépendances ===
 +
 +Afficher les paquets dont dépend un paquet:
 +<​code>​
 +#fedora
 +dnf repoquery --requires --resolve packagename
 +#centos/RH
 +repoquery --requires --resolve packagename
 +</​code>​
 +et si on a un paquet:
 +<​code>​
 +rpm -qp --requires package.rpm
 +</​code>​
 +
 +==== queryformat ====
 +
 +Permet de personnaliser les informations affichées par [[:​rpm|rpm]] / yum lors d'une interrogation
 +
 +=== format d'​étiquette ===
 +
 +<​code>​
 +%{NAME}
 +%30{NAME} - 30 char AVANT l'​étiquette
 +%-30{NAME} - 30 char APRÈS l'​étiquete
 +</​code>​
 +
 +=== afficher la liste des étiquettes disponibles ===
 +<​code>​
 +rpm --querytags
 +</​code>​
 +
 +=== listes des paquets non officiels ===
 +<​code>​
 +rpm -qa --qf '​%{NAME}\t%{VENDOR}\n' ​ | awk '{ if( $2 != "​CentOS"​)print $0}'
 +</​code>​
 +
 +=== listes des paquets sans la version ===
 +(pour les réinstaller suite à une mise à jour)
 +<​code>​
 +rpm -qa --queryformat '​%{NAME} ' # ne pas oublier l'​espace avant la guillement fermante
 +</​code>​
 +
 +
 +=== lister les paquets installés par l'​utilisateur ===
 +<​code>​
 +yum (ou dnf) history userinstalled
 +</​code>​
 +
 +=== Installer un paquet source ===
 +<​code>​
 +dnf download --source package_name
 +</​code>​
 +==== Travailler avec les transactions ====
 +
 +=== lister les transactions ===
 +
 +<​code>​
 +dnf history
 +</​code>​
 +
 +=== détail d'une transaction ===
 +
 +<​code>​
 +dnf list transaction_id
 +</​code>​
 +
 +=== Annuler une transaction ===
 +installé -> désinstallé (et réciproquement)
 +mise à jour -> downgradé
 +<​code>​
 +dnf undo transaction_id
 +</​code>​
 +</​code>​
 +# vim: set filetype=dokuwiki:​
 +<​code>​
 +dnf history
 +</​code>​
 +# vim: set filetype=dokuwiki:​
 +
 +
 +==== Créer un dépôt local ====
 +
 +  - yum install createrepo
 +  - mkdir -p /​var/​www/​repo/​CentOS/​7/​x86_64/​local
 +  - Récupérer l'​image iso d'un dvd CentOS
 +  - mount -o loop,ro imagedvd
 +  - copier le contenu du répertoire **Packages** dans     /​var/​www/​repo/​CentOS/​7/​x86_64/​local
 +  - Générer les métadata: createrepo /​var/​www/​repo/​CentOS/​7/​x86_64/​local
 +  - Générer le fichier de définition de dépôts:
 +<​code>​
 +
 +**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
 +</​code>​
 +  - Vérifier - yum repolist
 +  - 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:
 +<​code>​
 +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
 +</​code>​
 +
 +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:
 +<​code>​
 +cat /​etc/​httpd/​conf.d/​repo.conf
 +Alias /repo /​var/​www/​repo
 +<​Directory /​var/​www/​repo >
 +  require all granted
 +  Options indexes
 +</​Directory>​
 +</​code>​
 +
 +- Configurer yum:
 +<​code>​
 +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
 +</​code>​
 +
 + === 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
 +
 +  - yum install yum-utils
 +  - 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
 +<​code>​
 +server{
 +        listen 80 ;
 +        server_name cafeine 192.168.10.96 ;
 +        root /​home/​BigFiles/​m ;
 +        location /​home/​BigFiles/​m {
 +                autoindex on ;
 +        }
 +}
 +</​code>​
 +  * systemctl reload nginx
 +  * vim /​etc/​yum.repos.d/​local.repo
 +<​code>​
 +[local]
 +name=CentOS-$releasever - local packages for $basearch
 +baseurl=http://​192.168.10.96/ ​                                                                                                                                                                                      
 +enabled=1
 +gpgcheck=0
 +cost=100
 +</​code>​
 +
 +
 +==== 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é.
 +
 +<​code>​
 +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
 +</​code>​
 +
 +==== 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|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:
 +  - change version
 +  - <​del>​rpmbuild -bl PATHTOSPCFILE permet de vérifier la section %file</​del>​
 +  - rpmbuild -ba PATHTOSPECFILE - constater l'​échec,​ causé par de légères différences dans les fichiers.
 +  - corriger:
 +    - comment out line #136 of spec file or {{::​nagios-0005-fixed-path-to-passwd-file-in-apache-s-config-file.patch|use this patch}}
 +    - comment out line #138 of spec file
 +    - rajouter "​%{_datadir}/​%{name}/​html/​d3/​d3.min.js"​ à la ligne 290 du specfile ​
 +  - relancer la construction
 +
 +Installer les paquets [[:​nagios|nagios]] et [[:​nagios|nagios]]-common depuis le répertoire RPMS/x86_64
 +
 +**remarque**
 +
 +il est plus simple de partir des sources officielles:​
 +  - sudo yum install rpm-build yum-utils
 +  - mkdir -p ~/​rpmbuild/​{BUILD,​RPMS,​SOURCES,​SPECS,​SRPMS}
 +  - cd rpmbuild/​SOURCES
 +  - wget https://​assets.nagios.com/​downloads/​nagioscore/​releases/​nagios-4.2.3.tar.gz
 +  - tar xzf nagios-4.2.3.tar.gz nagios-4.2.3/​nagios.spec
 +  - mv nagios-4.2.3/​nagios.specs ~/​rpmbuild/​SPECS/​
 +  - cd -
 +  - rpmbuild -ba SPECS/​nagios.spec
 +  - repeat until all dependencies are solved
 +  - 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)