J'ai un serveur avec une connectivité nette, où je peux utiliser "yum install $ PACKAGE".
Je veux une commande yum, comme yum cache-rpms $PACKAGE $DIRECTORY
de sorte que tous les fichiers RPM requis seront téléchargés dans $ DIRECTORY, qui aura également un fichier (Install.sh
) indiquant l'ordre dans lequel installer ces RPM, sur de nombreux autres serveurs sans connectivité réseau.Install.sh
peut même être un script Shell, qui a le même comportement que yum install $PACKAGE
, sauf qu'il n'utilisera pas le réseau, mais n'utilisera que $DIRECTORY
.
Possible?
Je recherche une solution générale où yum et RPM sont disponibles, mais pour la spécificité: c'est sur un ensemble de serveurs CENTOS 6.7.
Voici un exemple spécifique utilisant "httpd" comme package pour télécharger et installer. Ce processus a été testé sur CentOS6 et CentOS7.
Installez le matériel dont vous avez besoin et faites un endroit pour mettre les RPM téléchargés:
# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot
Téléchargez les RPM. Cela utilise le astuce d'installation suggérée ici pour forcer un téléchargement complet de toutes les dépendances car rien n'est installé dans cette racine vide. Yum créera des métadonnées là-dedans, mais nous allons tout jeter. Notez que pour CentOS7 releasever
serait "7".
# yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=6 --downloaddir=/var/tmp/httpd httpd
Oui, était la petite version. Vous devriez avoir vu la taille des téléchargements du repo complet!
Générez les métadonnées nécessaires pour transformer notre nouvelle pile de RPM en repo YUM et nettoyer ce dont nous n'avons plus besoin:
# createrepo --database /var/tmp/httpd
# rm -rf /var/tmp/httpd-installroot
Configurez le répertoire de téléchargement en tant que dépôt. Notez que pour CentOS7, le gpgkey serait nommé "7" au lieu de "6":
# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Pour vérifier les dépendances manquantes:
# repoclosure --repoid=offline-httpd
Je n'ai pas compris pourquoi sur CentOS7 cela signale des choses comme libssl.so.10(libssl.so.10)(64bit)
manquantes dans httpd-tools
Lorsque openssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm
(Le fournisseur de cette bibliothèque) est clairement présent dans le répertoire. Néanmoins, si vous voyez quelque chose qui manque manifestement, cela pourrait être une bonne occasion de revenir en arrière et de l'ajouter en utilisant la même méthode yum install --downloadonly
Ci-dessus.
Lorsque vous êtes hors ligne ou après avoir copié le répertoire de dépôt /var/tmp/httpd
Sur l'autre serveur, installez-le:
# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# yum --disablerepo=\* --enablerepo=offline-httpd install httpd
Espérons qu'aucune dépendance ne manque!
J'en avais besoin plusieurs fois, j'ai donc automatisé la réponse @Steve Bonds. Assurez-vous simplement de définir PKG
comme package à installer sur les deux machines (Avertissement: pour CentOS 7. Pour CentOS 6, modifiez le --releasever
et CentOS-7
place.
machine en ligne
PKG=... # NAME OF THE PACKAGE TO INSTALL ON OFFLINE MACHINE
yum install --downloadonly --installroot=/tmp/$PKG-installroot --releasever=7 --downloaddir=/tmp/$PKG $PKG
createrepo --database /tmp/$PKG
rm -rf /tmp/$PKG-installroot
rsync -arv /tmp/$PKG/ [IP of the machine]:/tmp/$PKG
sur une machine hors ligne:
PKG=... # NAME OF THE PACKAGE
echo "[offline-$PKG]
name=CentOS-\$releasever - $PKG
baseurl=file:///tmp/$PKG/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" > /etc/yum.repos.d/offline-$PKG.repo
# install package offline:
yum --disablerepo=\* --enablerepo=offline-$PKG install --nogpgcheck $PKG
Il semble que vous demandiez yumdownloader
qui est contenu dans le package yum-utils
. Il y a déjà quelques questions et réponses à ce sujet, voir par ex. Téléchargez toutes les dépendances avec yumdownloader, même si elles sont déjà installées? ou Comment trouver les URL des packages avec Yum?
yumdownloader
téléchargera les packages, bien qu'il ne génère pas de fichier Install.sh
car l'ordre peut être déterminé par yum lui-même, vous pouvez donc installer les packages sur la boîte cible viayum install ./*rpm
dans le dossier contenant vos packages téléchargés (qui doit inclure toutes les dépendances par rapport à une installation de base - voir le premier lien ci-dessus concernant repotrack
)