J'ai construit deux packages RPM
proj1-1.0-1.x86_64.rpm
libtest1-1.0-1.x86_64.rpm
proj1
dépend du fichier libtest1.so
présent et il est correctement reflété dans les paquetages RPM, comme indiqué ici:
user@my-pc:~$ rpm -qp --requires proj1-1.0-1.x86_64.rpm
libtest1.so()(64bit)
user@my-pc:~$ rpm -qp --provides libtest1-1.0-1.x86_64.rpm
libtest1.so()(64bit)
L'installation de proj1
échoue en raison d'une dépendance manquante.
user@my-pc:~$ rpm -ivh proj1-1.0-1.x86_64.rpm
error: Failed dependencies:
libtest1.so()(64bit) is needed by proj1-1.0-1.x86_64.rpm
Comment puis-je m'assurer que libtest1-1.0-1.x86_64.rpm
est installé automatiquement lors de l'installation de proj1-1.0-1.x86_64.rpm
?
J'ai essayé l'option --aid
avec rpm -i
comme décrit ici mais cela n'a pas fonctionné pour moi.
Est-ce qu'il y a un autre moyen?
Merci pour toute aide.
Créez un référentiel (local) et utilisez yum
pour le résoudre à votre place.
Le wiki CentOS a une page Nice fournissant un tutoriel à ce sujet. HowTos de wiki de CentOS/CreateLocalRepos .
Résumé et minimisé (pas idéal, mais le plus rapide):
/home/user/repo
.Correction de certaines autorisations de propriété et de système de fichiers:
# chown -R root.root /home/user/repo
Installez le paquet createrepo
s'il n'est pas encore installé et lancez
# createrepo /home/user/repo
# chmod -R o-w+r /home/user/repo
Créez un fichier de configuration de référentiel, par exemple. /etc/yum.repos.d/myrepo.repo
contenant
[local]
name=My Awesome Repo
baseurl=file:///home/user/repo
enabled=1
gpgcheck=0
Installez votre paquet en utilisant
# yum install packagename
Le lien fourni par @gertvdijk montre un moyen rapide d'obtenir les résultats souhaités sans configurer de référentiel local:
$ yum --nogpgcheck localinstall packagename.Arch.rpm
Remplacez simplement packagename.Arch.rpm
par le nom de fichier RPM que vous souhaitez installer.
Edit Juste une clarification, cela installera automatiquement toutes les dépendances déjà disponibles via les référentiels YUM du système.
Si des dépendances sont satisfaites par d'autres RPM qui ne figurent pas dans les référentiels du système, cette méthode ne fonctionnera que si chaque RPM est également spécifié avec packagename.Arch.rpm
sur la ligne de commande.
Pour les utilisateurs de DNF, n'utilisez que dnf install *.rpm
, localinstall
n'est plus nécessaire.
Pour moi a travaillé juste avec
# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm
Et automatiquement demandé l'autorisation de télécharger les dépendances. En dessous de l'exemple, j'utilise Fedora 22
[root@localhost lukas]# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm
Yum command has been deprecated, redirecting to '/usr/bin/dnf install ffmpeg-2.6.4-1.fc22.x86_64.rpm'.
See 'man dnf' and 'man yum2dnf' for more information.
To transfer transaction metadata from yum to DNF, run:
'dnf install python-dnf-plugins-extras-migrate && dnf-2 migrate'
Last metadata expiration check performed 0:28:24 ago on Fri Sep 25 12:43:44 2015.
Dependencies resolved.
====================================================================================================================
Package Arch Version Repository Size
====================================================================================================================
Installing:
SDL x86_64 1.2.15-17.fc22 Fedora 214 k
ffmpeg x86_64 2.6.4-1.fc22 @commandline 1.5 M
ffmpeg-libs x86_64 2.6.4-1.fc22 rpmfusion-free-updates 5.0 M
fribidi x86_64 0.19.6-3.fc22 Fedora 69 k
lame-libs x86_64 3.99.5-5.fc22 rpmfusion-free 345 k
libass x86_64 0.12.1-1.fc22 updates 85 k
libavdevice x86_64 2.6.4-1.fc22 rpmfusion-free-updates 75 k
libdc1394 x86_64 2.2.2-3.fc22 Fedora 124 k
libva x86_64 1.5.1-1.fc22 Fedora 79 k
openal-soft x86_64 1.16.0-5.fc22 Fedora 292 k
opencv-core x86_64 2.4.11-5.fc22 updates 1.9 M
openjpeg-libs x86_64 1.5.1-14.fc22 Fedora 89 k
schroedinger x86_64 1.0.11-7.fc22 Fedora 315 k
soxr x86_64 0.1.2-1.fc22 updates 83 k
x264-libs x86_64 0.142-12.20141221git6a301b6.fc22 rpmfusion-free 587 k
x265-libs x86_64 1.6-1.fc22 rpmfusion-free 486 k
xvidcore x86_64 1.3.2-6.fc22 rpmfusion-free 264 k
Transaction Summary
====================================================================================================================
Install 17 Packages
Total size: 11 M
Total download size: 9.9 M
Installed size: 35 M
Is this ok [y/N]: y
J'ai trouvé une solution plus simple. Si vous avez tous les RPM dans le même répertoire, tout ce que vous avez à faire est,
$ Sudo rpm -i *.rpm
rpm
semble comprendre le bon ordre pour les installer et installer les RPM.
La réponse de Matthew suscita de nombreuses émotions, car il lui manquait encore un détail mineur. La commande générale serait:
# yum --nogpgcheck localinstall <package1_file_name> ... <packageN_file_name>
Le package_file_name
ci-dessus peut inclure un chemin absolu ou relatif local, ou être une URL (éventuellement même un URI).
Yum rechercherait des dépendances parmi tous les fichiers de paquet indiqués sur la ligne de commande ET EN CAS D'ÉCHEC pour y trouver des dépendances, il utilisera également tous les référentiels yum configurés et activés.
Ni le répertoire de travail actuel, ni les chemins d'accès d'aucun de package_file_name
ne seront recherchés, sauf si l'un de ces répertoires a déjà été configuré en tant que référentiel activé yum
.
Donc, dans le cas du PO, la commande yum
:
# cd <path with pkg files>; yum --nogpgcheck localinstall ./proj1-1.0-1.x86_64.rpm ./libtest1-1.0-1.x86_64.rpm
ferait, comme ferait la rpm
:
# cd <path with pkg files>; rpm -i proj1-1.0-1.x86_64.rpm libtest1-1.0-1.x86_64.rpm
La différence entre ces invocations yum
et rpm
ne serait visible que si l'un des packages listés pour être installé avait d'autres dépendances sur des packages non listés sur la ligne de commande.
Dans un tel cas, rpm
refusera simplement de continuer, tandis que yum
utiliserait n'importe quel référentiel yum configuré et activé pour rechercher des dépendances, et pourrait éventuellement réussir.
Dans tous les cas, le répertoire de travail en cours ne fera PAS l'objet d'une recherche, sauf s'il a déjà été configuré en tant que référentiel activé yum
.
Dans le cas d'openSUSE Leap 15, je reçois une erreur similaire:
> Sudo rpm -i opera-stable_53.0.2907.68_AMD64.rpm
[Sudo] password for root:
warning: opera-stable_53.0.2907.68_AMD64.rpm: Header V4 RSA/SHA512 Signature, key ID a5c7ff72: NOKEY
error: Failed dependencies:
at is needed by opera-stable-53.0.2907.68-0.x86_64
Je lance cette commande pour comprendre quelles sont les dépendances:
> Sudo zypper install opera-stable_53.0.2907.68_AMD64.rpm
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following 4 NEW packages are going to be installed:
at libfl2 libHX28 opera-stable
4 new packages to install.
Overall download size: 50.3 MiB. Already cached: 0 B. After the operation, additional 176.9 MiB will be used.
Continue? [y/n/...? shows all options] (y): n
Ensuite, je lance cette commande pour installer des dépendances:
> Sudo zypper in at
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following 3 NEW packages are going to be installed:
at libfl2 libHX28
3 new packages to install.
Overall download size: 208.6 KiB. Already cached: 0 B. After the operation, additional 600.4 KiB will be used.
Continue? [y/n/...? shows all options] (y): y
Ensuite, je lance ceci pour installer le fichier rpm
:
> Sudo rpm -i opera-stable_53.0.2907.68_AMD64.rpm
Je suis pas sûr que ce soit la meilleure pratique, mais cela a résolu mon problème.
J'ai rencontré ceci et ce qui a fonctionné pour moi a été d'exécuter yum localinstall enterPkgNameHere.rpm
à partir du répertoire où se trouve le fichier .rpm.
Remarque: remplacez le enterPkgNameHere.rpm
par le nom de votre fichier .rpm.
Étape 1: copier tous les emballages RPM dans des emplacements donnés
Étape 2: si createrepo n’est pas déjà installé, comme ce ne sera pas le cas par défaut, installez-le.
[root@pavangildamysql1 8.0.11_rhel7]# yum install createrepo
Étape 3: créez les métedonnées du référentiel et donnez l'autorisation ci-dessous
[root@pavangildamysql1 8.0.11_rhel7]# chown -R root.root /scratch/PVN/8.0.11_rhel7
[root@pavangildamysql1 8.0.11_rhel7]# createrepo /scratch/PVN/8.0.11_rhel7
Spawning worker 0 with 3 pkgs
Spawning worker 1 with 3 pkgs
Spawning worker 2 with 3 pkgs
Spawning worker 3 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@pavangildamysql1 8.0.11_rhel7]# chmod -R o-w+r /scratch/PVN/8.0.11_rhel7
Étape 4: Créez un fichier de référentiel avec le contenu suivant dans /etc/yum.repos.d/mysql.repo
[local]
name=My Awesome Repo
baseurl=file:///scratch/PVN/8.0.11_rhel7
enabled=1
gpgcheck=0
Étape 5 Exécutez cette commande pour installer
[root@pavangildamysql1 local]# yum --nogpgcheck localinstall mysql-commercial-server-8.0.11-1.1.el7.x86_64.rpm