Installation de paquet
Sommaire
Présentation
Cette page a pour objet de décrire différentes d'installation de paquet sur des serveurs Linux.
Installation de paquet
Un paquet peut être installé de différentes manières selon le besoin et/ou la disponibilité des sources.
Le moyen le plus simple d'installer un paquet est d'utiliser un gestionnaire de paquets.
Via le gestionnaire de paquets
Un gestionnaire de paquets permet de rechercher le paquet désiré sur les différents dépôts qui lui sont configurés et de gérer l'installation des dépendances nécessaires au paquet.
Sur OpenSUSE, le gestionnaire de paquets est ZYpp.
Ainsi, pour rechercher un paquet, drush par exemple, il faut taper la commande suivante :
Exemple de retour :
Loading repository data... Reading installed packages... S | Name | Summary | Type --+-------+-------------------------------------------------------+-------- | drush | Command line shell and scripting interface for Drupal | package
Pour l'installer, il faudra taper :
Exemple de retour :
Loading repository data... Reading installed packages... Resolving package dependencies... The following 11 NEW packages are going to be installed: drush php7 php7-ctype php7-dom php7-iconv php7-json php7-pdo php7-sqlite php7-tokenizer php7-xmlreader php7-xmlwriter The following 8 recommended packages were automatically selected: php7-ctype php7-dom php7-iconv php7-json php7-sqlite php7-tokenizer php7-xmlreader php7-xmlwriter The following 4 packages are suggested, but will not be installed: php7-mbstring php7-pcntl php7-posix php7-readline 11 new packages to install. Overall download size: 3.7 MiB. Already cached: 0 B. After the operation, additional 17.2 MiB will be used. Continue? [y/n/...? shows all options] (y):
Cet exemple est intéressant car il montre que le gestionnaire de paquets va automatiquement installer les dépendances nécessaires.
Cet exemple est d'autant plus intéressant car les dépendances à installer sont déjà présentes sur le serveur. Toutefois, comme elles n'ont pas été installées par le gestionnaire de paquets, c'est donc normal qu'il cherche à les installer.
Il est alors possible de rajouter l'option --no-recommends afin de réduire la liste des dépendances :
Exemple de retour :
Loading repository data... Reading installed packages... Resolving package dependencies... The following 5 NEW packages are going to be installed: drush php7 php7-ctype php7-iconv php7-json 5 new packages to install. Overall download size: 3.2 MiB. Already cached: 0 B. After the operation, additional 16.7 MiB will be used. Continue? [y/n/...? shows all options] (y):
Dans cet exemple, bien que la quantité de dépendances soit réduite, les paquets supplémentaires à installer sont également déjà présents sur le serveur.
ZYpp ne permettant pas de "casser" l'arbre des dépendances en n'installant que le paquet drush, il faudra donc se tourner vers un autre mode d'installation.
Via rpm
Selon la distribution Linux utilisée, les formats de paquets peuvent être différents :
- .rpm
- RHEL
- CentOS
- Fedora
- OpenSUSE
- .deb
- Debian
- Ubuntu
- .aur
- Arch Linux
- .tcz
- TinyCore
Sur OpenSUSE, le format de paquet utilisé est .rpm. Par conséquent, le gestionnaire de paquet RPM fonctionne également.
La différence avec ZYpp est qu'il faut télécharger manuellement les paquets à installer.
Par exemple, le paquet gxine n'est pas disponible sur les dépôts ZYpp d'OpenSUSE :
zypper se gxine
Exemple de retour :
Loading repository data... Reading installed packages... No matching items found.
Il est alors possible de le télécharger depuis http://packman.links2linux.org/package/gxine/911611.
Pour ce faire, taper la commande suivante :
wget http://packman.links2linux.org/download/gxine/3103004/gxine-0.5.910-1.178.x86_64.rpm
Exemple de retour :
--2019-08-26 17:20:26-- http://packman.links2linux.org/download/gxine/3103004/gxine-0.5.910-1.178.x86_64.rpm Resolving packman.links2linux.org (packman.links2linux.org)... 178.63.53.104 Connecting to packman.links2linux.org (packman.links2linux.org)|178.63.53.104|:80... connected. HTTP request sent, awaiting response... 302 Moved Temporarily Location: http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/Multimedia/x86_64/gxine-0.5.910-1.178.x86_64.rpm [following] --2019-08-26 17:20:42-- http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/Multimedia/x86_64/gxine-0.5.910-1.178.x86_64.rpm Resolving ftp.gwdg.de (ftp.gwdg.de)... 134.76.12.6, 2001:638:60f:110::1:2 Connecting to ftp.gwdg.de (ftp.gwdg.de)|134.76.12.6|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 296872 (290K) [application/x-redhat-package-manager] Saving to: 'gxine-0.5.910-1.178.x86_64.rpm' gxine-0.5.910-1.178.x86_64.rpm 100%[========================================================================================================================================>] 289.91K --.-KB/s in 0.004s 2019-08-26 17:20:42 (78.0 MB/s) - 'gxine-0.5.910-1.178.x86_64.rpm' saved [296872/296872]
Pour vérifier les dépendances nécessaires du paquet rpm, lancer la commande :
rpm -qpR gxine-0.5.910-1.178.x86_64.rpm
Exemple de retour :
warning: gxine-0.5.910-1.178.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY config(gxine) = 0.5.910-1.178 libX11.so.6()(64bit) libXext.so.6()(64bit) libXinerama.so.1()(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.15)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.2)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libc.so.6(GLIBC_2.7)(64bit) libdl.so.2()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libgdk-3.so.0()(64bit) libgdk_pixbuf-2.0.so.0()(64bit) libglib-2.0.so.0()(64bit) libgobject-2.0.so.0()(64bit) libgtk-3.so.0()(64bit) libgudev-1.0.so.0()(64bit) liblirc_client.so.0()(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libm.so.6(GLIBC_2.29)(64bit) libmozjs185.so.1.0()(64bit) libpango-1.0.so.0()(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) libpthread.so.0(GLIBC_2.3.3)(64bit) libxcb.so.1()(64bit) libxine.so.2()(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1
Le retour indique que de nombreuses dépendances sont nécessaires.
Pour installer le paquet gxine, lancer la commande :
rpm -ivh gxine-0.5.910-1.178.x86_64.rpm
Exemple de retour :
warning: gxine-0.5.910-1.178.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY error: Failed dependencies: libXinerama.so.1()(64bit) is needed by gxine-0.5.910-1.178.x86_64 libgdk-3.so.0()(64bit) is needed by gxine-0.5.910-1.178.x86_64 libgdk_pixbuf-2.0.so.0()(64bit) is needed by gxine-0.5.910-1.178.x86_64 libgtk-3.so.0()(64bit) is needed by gxine-0.5.910-1.178.x86_64 libgudev-1.0.so.0()(64bit) is needed by gxine-0.5.910-1.178.x86_64 liblirc_client.so.0()(64bit) is needed by gxine-0.5.910-1.178.x86_64 libm.so.6(GLIBC_2.29)(64bit) is needed by gxine-0.5.910-1.178.x86_64 libmozjs185.so.1.0()(64bit) is needed by gxine-0.5.910-1.178.x86_64 libpango-1.0.so.0()(64bit) is needed by gxine-0.5.910-1.178.x86_64 libxine.so.2()(64bit) is needed by gxine-0.5.910-1.178.x86_64
Un message d'erreur annonce l'absence des dépendances. Deux solutions sont alors possibles :
- Installer une à une les dépendances
- Long et fastidieux, mais efficace
- Répéter l'action précédente autant que nécessaire
- Installer le paquet sans les dépendances
- Rapide et sans blocage, mais ne garantie aucunement le bon fonctionnement du paquet
Pour installer le paquet sans ses dépendances, lancer la commande suivante :
rpm -ivh --nodeps gxine-0.5.910-1.178.x86_64.rpm
Exemple de retour :
warning: gxine-0.5.910-1.178.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:gxine-0.5.910-1.178 ################################# [100%]
ATTENTION ! L'installation d'un paquet sans ses dépendances n'est absolument pas recommandée !
Manuellement
Selon les situations, il faut installer manuellement le paquet désiré.
Il existe plusieurs méthodes d'installation :
- Compilation
- Prendre en exemple la compilation de PHP
- Installation semi-automatique via un script
- Prendre en exemple l'installation de Composer
- Téléchargement de binaires
- Prendre en exemple l'installation de Node.js