Hoe u afhankelijkheden voor automatische installatie van rpm kunt maken

Ik heb twee RPM-pakketten gebouwd

  • proj1-1.0-1.x86_64.rpm
  • libtest1-1.0-1.x86_64.rpm

proj1hangt af van de aanwezigheid van het bestand libtest1.soen wordt correct weergegeven in de RPM-pakketten zoals hier te zien is:

[email protected]:~$ rpm -qp --requires proj1-1.0-1.x86_64.rpm
libtest1.so()(64bit)
[email protected]:~$ rpm -qp --provides libtest1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

De installatie van proj1mislukt vanwege een ontbrekende afhankelijkheid.

[email protected]:~$ 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

Hoe zorg ik ervoor dat libtest1-1.0-1.x86_64.rpmautomatisch wordt geïnstalleerd tijdens
de installatie van proj1-1.0-1.x86_64.rpm?

Ik heb de optie --aidgeprobeerd met rpm -izoals beschreven hiermaar het werkte niet voor mij.

Is er een andere manier?

Bedankt voor alle hulp.


Antwoord 1, autoriteit 100%

Maak een (lokale) repository en gebruik yumom de afhankelijkheden voor je op te lossen.

De CentOS-wiki heeft een mooie pagina met instructies hierover. CentOS-wiki HowTos/CreateLocalRepos.


Samengevat en verder geminimaliseerd (niet ideaal, maar snelste):

  1. Maak een directory voor je lokale repository, b.v. /home/user/repo.
  2. Verplaats de RPM’s naar die map.
  3. Sommige eigendoms- en bestandssysteemrechten herstellen:

    # chown -R root.root /home/user/repo
    
  4. Installeer de createrepoPakket indien niet geïnstalleerd en voer

    uit

    # createrepo /home/user/repo
    # chmod -R o-w+r /home/user/repo
    
  5. Maak een repository-configuratiebestand, b.v. /etc/yum.repos.d/myrepo.repomet

    [local]
    name=My Awesome Repo
    baseurl=file:///home/user/repo
    enabled=1
    gpgcheck=0
    
  6. Installeer uw pakket met

    # yum install packagename
    

2, Autoriteit 189%

De geleverde link @Gertvdijk toont een snelle manier om de gewenste resultaten te bereiken zonder een lokale repository te configureren:

$ yum --nogpgcheck localinstall packagename.arch.rpm

Wijzig gewoon packagename.arch.rpmnaar de RPM-bestandsnaam die u wilt installeren.

bewerken Gewoon een verduidelijking, dit installeert automatisch alle afhankelijkheden die al beschikbaar zijn via System YUM-repositories.

Als u afhankelijkheden voldoet aan de hand van andere RPM’s die zich niet in de repositories van het systeem bevinden, werkt deze methode niet tenzij elke RPM ook wordt opgegeven samen met packagename.arch.rpmop de opdrachtregel.


3, Autoriteit 28%

Voor DNF-gebruikers Gebruik gewoon dnf install *.rpm, localinstallis niet langer nodig.


4, Autoriteit 25%

voor mij werkte gewoon met

# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm

en automatisch gestelde autorisatie om de depeedscies te dowload.
Onder het voorbeeld gebruik ik Fedora 22

[[email protected] 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

Antwoord 5, autoriteit 9%

Ik heb een eenvoudigere oplossing gevonden. Als je alle RPM’s in dezelfde map hebt staan, hoef je alleen maar,

$ sudo rpm -i *.rpm

rpmlijkt de juiste volgorde te vinden om deze te installeren en installeert de RPM’s.


6

In het geval van OpenSUSE LEAP 15, ontvang ik een soortgelijke fout:

> 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

Ik voer deze opdracht uit om erachter te komen wat de afhankelijkheden zijn:

> 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

Vervolgens voer ik deze opdracht uit om afhankelijkheden te installeren:

> 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

Vervolgens voer ik dit uit om het bestand rpmte installeren:

> sudo rpm -i opera-stable_53.0.2907.68_amd64.rpm

Ik weet nietzeker of dit de beste methode is, maar het heeft mijn probleem opgelost.


Antwoord 7

Ik kwam dit tegen en wat voor mij werkte, was om yum localinstall enterPkgNameHere.rpmuit te voeren vanuit de map waar het .rpm-bestand zich bevindt.

Opmerking: vervang enterPkgNameHere.rpmdoor de naam van uw .rpm-bestand.


Antwoord 8

Stap1: kopieer alle rpm-pkg op bepaalde locaties

Stap2: als createrepo nog niet is geïnstalleerd, aangezien dit niet standaard zal zijn, installeer het dan.

[[email protected] 8.0.11_rhel7]# yum install createrepo

Stap3: maak repository-metedata aan en geef onderstaande toestemming

[[email protected] 8.0.11_rhel7]# chown -R root.root /scratch/PVN/8.0.11_rhel7
[[email protected] 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
[[email protected] 8.0.11_rhel7]# chmod -R o-w+r /scratch/PVN/8.0.11_rhel7

Stap4: Maak een repository-bestand met de volgende inhoud op /etc/yum.repos.d/mysql.repo

[local]
name=My Awesome Repo
baseurl=file:///scratch/PVN/8.0.11_rhel7
enabled=1
gpgcheck=0

Stap5 Voer deze opdracht uit om

. te installeren

[[email protected] local]# yum --nogpgcheck localinstall mysql-commercial-server-8.0.11-1.1.el7.x86_64.rpm

Antwoord 9

Kopieer al uw RPM’s naar een map en installeer ze als volgt:

yum install -y --cacheonly --disablerepo=* /var/rpm_dir/*.rpm

Voor specifieke pakketten kun je yumdownloadergebruiken, bijvoorbeeld in deze andere thread: https://stackoverflow. com/a/66927190/5078874


Antwoord 10

Voer eenvoudig het volgende commando uit.

sudo dnf install *package.rpm

Voer uw wachtwoord in en u bent klaar.


Antwoord 11

Proces voor het genereren van RPM uit bronbestand:
1) download het bronbestand met de extensie.gz.
2) installeer rpm-build en rpmdevtools vanuit yum install. (rpmbuild map zal worden gegenereerd…SPECS,SOURCES,RPMS.. mappen moeten worden gegenereerd in de rpmbuild map).
3) kopieer de source code.gz naar de SOURCES map.(rpmbuild/SOURCES)
4) Maak de teerbal los met behulp van de volgende opdracht.
ga naar de SOURCES-map :rpmbuild/SOURCES waar het tar-bestand aanwezig is.
commando: bijv. tar -xvzf httpd-2.22.tar.gz
httpd-2.22 map wordt in hetzelfde pad gegenereerd. Controleer of apr en apr-util en daar in de map httpd-2.22/srclib. Als apr en apr-util niet bestaan, download dan de nieuwste versie van de apache-site, verwijder deze en plaats deze in de map httpd-2.22/srclib. Zorg er ook voor dat u pcre op uw systeem hebt geïnstalleerd.

5)ga naar de uitgepakte map en typ dan onderstaande opdracht:
./configure –prefix=/usr/local/apache2 –with-included-apr –enable-proxy –enable-proxy-balancer –with-mpm=worker –enable-mods-static=all
6) voer onderstaande opdracht uit zodra de configuratie is geslaagd:
maken
7) na succesvolle uitvoering van het commando laat uitvoeren:
checkinstall
in dezelfde map. (als je geen checkinstall-software hebt, download dan de nieuwste versie van de site)
Ook checkinstall software heeft een bug die kan worden opgelost door de volgende manier:::::
zoek checkinstallrc en vervang dan TRANSLATE = 1 in TRANSLATE=0 met behulp van de vim-opdracht.
Controleer ook op pakket uitsluiten: EXCLUDE=”/selinux”
8)checkinstall zal om een optie vragen (type R als je tp build rpm voor het bronbestand wilt)
9) Klaar .rpm-bestand wordt gebouwd in de RPMS-map in het rpmbuild/RPMS-bestand…
ALLEMAAL HET BESTE ….

Met vriendelijke groet,
Prerana

Other episodes