J'ai deux machines CentOS, une boîte 6.3 ( A ) et une autre CentOS 6.1. ( B )
La boîte 6.3 est avec connexion Internet, la boîte 6.1 est sans connexion Internet.
Je souhaite télécharger TOUTES les dépendances d'un produit sur la boîte A, puis copier ces n boîtes B et installer le produit.
J'ai essayé avec
yum --downloadonly --downloaddir=*~/downloadrepo* -y install *product*`
cd *~/downloadrepo*
createrepo .
Ensuite, j'ai désactivé tous les référentiels (avec --disablerepo), à l'exception de mon référentiel, et installé le produit sur la même machine (encadré A). Aucune erreur.
yum install *product*
Maintenant, quand j'ai copié ce dépôt dans la boîte B et essayé d'installer avec la même commande, il commence l'installation, mais donne ensuite beaucoup d'erreurs comme ci-dessous:
Erreur: dépendance manquante: libldap-2.3.so.0 () (64 bits) est requis par le package php-ldap-5.1.6-27.el5_5.3.x86_64 (installé)
Puis-je obtenir ce dont j'ai besoin?
MISE À JOUR
Au moment où j'ai commencé à travailler avec l'option suggérée par @rkosegi ( --releasever = version ), on m'a donné une nouvelle boîte avec la même version CentOS 6.1 ( C )
J'ai essayé les commandes mentionnées ci-dessus sur la boîte C, et copié le repo dans la boîte B. Pourtant, il a échoué. La raison: bien que les deux cases soient 6.1, celles-ci ne sont pas identiques ( uname -r renvoie des chaînes différentes).
Yum ne télécharge pas les dépendances, si celles-ci sont déjà installées. Donc, mon dépôt ne contenait pas certaines des dépendances (y compris OpenJDK). Ainsi, lorsque j'essaie d'installer sur Box B, cela échoue.
Assez frustrant !!!
Mais j'ai trouvé la commande « repotrack » ici .
cd ~/downloadrepo
repotrack -p . -a x86_64 product
createrepo .
J'ai beaucoup plus de fichiers qu'avec miam, j'espère que ça fera l'affaire.
Je mettrai à jour, une fois que j'essaierai d'installer.
MISE À JOUR
Le repotrack de commande n'a pas fonctionné pour moi. Lorsque j'ai essayé d'installer à partir du référentiel créé avec 'repotrack', j'ai obtenu les erreurs suivantes:
Error: Package: perl-CGI-3.51-127.el6.x86_64 (repo-local)
Requires: perl = 4:5.10.1-127.el6
Installed: 4:perl-5.10.1-119.el6_1.1.x86_64 (@anaconda-CentOS-201112102333.x86_64/6.2)
perl = 4:5.10.1-119.el6_1.1
Error: Package: audit-libs-python-2.2-2.el6.x86_64 (repo-local)
Requires: audit-libs = 2.2-2.el6
Installed: audit-libs-2.1.3-3.el6.x86_64 (@anaconda-CentOS-201112102333.x86_64/6.2)
audit-libs = 2.1.3-3.el6
J'ai essayé de supprimer ces deux fichiers du dossier et de reconstruire le référentiel avec 'createrepo'. Cela a donné un autre ensemble d'erreurs.
Je ne sais pas quelles options j'ai en ce moment ...
la source
Réponses:
Si vous devez faire beaucoup de choses, vous voudrez peut-être prendre le temps de configurer Spacewalk . Il automatisera la création du référentiel et le remplira avec les packages appropriés (ou, si vous le souhaitez, tous). Sans parler de tout le reste ...
la source
Vous devez demander à yum de télécharger à partir du référentiel de la même version que la machine cible (6.1)
Assurez-vous également que la machine (6.3) qui effectuera le téléchargement n'a pas déjà installé certaines des dépendances manquantes sur la machine cible (6.1)
la source
Si vous ne pouvez pas obtenir une machine "propre", vous devez soit rechercher manuellement les pièces manquantes avec
yum provides
ouvous devez passer par vos rpms qui sont déjà en vous repo et d' interrogation de leurs dépendances:
rpm -qp --requires RPM
. Si cette liste révèle quelque chose de nouveau qui ne fait pas déjà partie de votre repo, vous devez l'ajouter.la source