RPM自動インストールの依存関係を作成する方法


138

2つのRPMパッケージをビルドしました

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

proj1libtest1.so存在するファイルに依存し、次に示すようにRPMパッケージに正しく反映されます。

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)

proj1依存関係がないため、のインストールは失敗します。

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

libtest1-1.0-1.x86_64.rpmのインストール中にが自動的にインストールされるようにするにはどうすればよいproj1-1.0-1.x86_64.rpmですか?

私はここで説明さ--aidrpm -iいるようにオプションを試しましたが、それは私にとってはうまくいきませんでした。

他に方法はありますか?

助けてくれてありがとう。

回答:


102

(ローカル)リポジトリを作成し、yumそれを使用して依存関係を解決します。

CentOS wikiには、これに関するハウツーを提供する素晴らしいページがあります。CentOS wiki HowTos / CreateLocalRepos


要約してさらに最小化(理想的ではありませんが、最速):

  1. ローカルリポジトリ用のディレクトリを作成します/home/user/repo
  2. RPMをそのディレクトリに移動します。
  3. いくつかの所有権とファイルシステムの権限を修正します。

    # chown -R root.root /home/user/repo
    
  4. createrepoまだインストールされていない場合はパッケージをインストールして実行します

    # createrepo /home/user/repo
    # chmod -R o-w+r /home/user/repo
    
  5. 例えば、リポジトリの設定ファイルを作成して/etc/yum.repos.d/myrepo.repo含んを

    [local]
    name=My Awesome Repo
    baseurl=file:///home/user/repo
    enabled=1
    gpgcheck=0
    
  6. を使用してパッケージをインストールします

    # yum install packagename
    

46
あなたが提供したリンクは、この一行だけで私のケースを解決しました:yum --nogpgcheck localinstall packagename.arch.rpm
マシュー

@Matthew Cool、ローカルリポジトリの手順全体が不要になります。それを答えとして投稿します。
gertvdijk 2013年

私のようにAIXにYUMのインストールを自動化するためにRPMをスクリプト化しようとしている場合、これはうまく機能しません;-)
Tricky

1
@ Max13、yum localinstallそれはこれであり、すでにここ投稿されている回答と同じですが、依存関係がyumリポジトリにない場合の欠点については既に説明しています([...]の部分がない限りこのメソッドは機能しません)。
gertvdijk

他のリポジトリを調べないようにsudo yum --disablerepo=* --enablerepo=local install packagename.arch.rpmするためにインターネット接続がない場合にも、これを計算しましたyum
Anshuman Goel

194

提供されているリンク@gertvdijkは、ローカルリポジトリを構成せずに目的の結果を得る簡単な方法を示しています。

$ yum --nogpgcheck localinstall packagename.arch.rpm

packagename.arch.rpmインストールするRPMファイル名に変更するだけです。

編集明確にすれば、これにより、システムYUMリポジトリを介してすでに利用可能なすべての依存関係が自動的にインストールされます。

システムのリポジトリにない他のRPMによって依存関係が満たされている場合packagename.arch.rpm、コマンドラインで各RPMも指定しない限り、この方法は機能しません。


7
いいえ、これはlibtest1-1.0-1.x86_64.rpm他のリポジトリにある場合、または両方のパッケージが " rpm -i"のようにコマンドラインで指定されている場合を除き、機能しません。これをyum3.4.3(Fedora 18)で確認しました。ここにあるトランスクリプトupdatesは、ファイルがそこにある場合でも、依存関係のリポジトリに行くことを示しています。
アーロンD.マラスコ2013年

3
@ AaronD.Marasco多分あなたは質問で説明されている特定のケースについて正しいかもしれませんが、このワンライナーは私がやったようにここに巻き上げる人にとってはるかに簡単であり、タイトルの質問に対する完全に有効な答えです、「方法rpm自動インストールの依存関係を作成します。」
マシュー

3
いいえ、依存関係の「自動インストール」ではありません。「rpm -i」の場合と同じように、コマンドラインで依存関係を指定しているため、使用しyumてもメリットはありません。
アーロンD.マラスコ2013年

2
私が書いたことをもう一度読んでください。RPMがインストールされているディレクトリでローカルに使用できる場合でも、依存関係はリポジトリからダウンロードされました。
アーロンD.マラスコ2013年

1
@ AaronD.Marasco OPが求めていた特定の例については、他の投稿されたソリューションの方が優れていることについては議論していません。しかし、私の答えはタイトルの質問に答えるのに正しいものであり、ローカルリポジトリを構成するよりもはるかに速く、yumに依存関係を自動的にインストールするための高速な方法を必要とする、私が行ったようにここまでたどり着く他の人を助けるでしょうrpmが必要です。これがスタックオーバーフローの目的であり、OPを支援するだけでなく、コミュニティが回答を検索するのに役立ちます。
マシュー

28

DNFユーザーの場合dnf install *.rpm、を使用するだけで、localinstallもう必要ありません。


1
これを正確に言うためにここに来ました
nawfel bgh

1
おかげで、でのインストールに苦労しmysql-workbenchていましたrpm -ivh。最終的にこの記事で終わった。DNFがトリックを行いました。
BlueBird

21

私にとっては

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

そして、依存関係をダウンロードする許可を自動的に求めました。例の下では、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

私が思う最も簡単な方法
Shams

直接のrpmソリューションではありませんが、これが一番好きです。
TFuto

RPMソリューションではありませんが、1つのコマンドだけで依存関係をインストールする最も簡単な方法です。これは完璧に機能しました
エンリケベニテス

9

私はもっ​​と簡単な解決策を見つけました。同じディレクトリにすべてのRPMがある場合、必要なのは、

$ sudo rpm -i *.rpm

rpm これらをインストールしてRPMをインストールする正しい順序を理解しているようです。


5
それでも、依存関係が現在のディレクトリにない場合は処理されません。
Ding-Yi Chen

4

マシューの答えは、まだ細かい部分が欠けているため、多くの感情を呼び起こしました。一般的なコマンドは次のとおりです。

# yum --nogpgcheck localinstall <package1_file_name> ... <packageN_file_name>

package_file_name上記ローカル絶対または相対パスを含む、またはURL(おそらくはURI)とすることができます。

Yumは、コマンドラインで指定されたすべてのパッケージファイル間の依存関係を検索し、そこに依存関係が見つからない場合は、構成および有効化されているyumリポジトリも使用します。

package_file_nameこれらのディレクトリのいずれかが以前に有効なyumリポジトリとして構成されている場合を除いて、現在の作業ディレクトリもいずれのパスも検索されません。

OPの場合、yumコマンドは次のとおりです。

# cd <path with pkg files>; yum --nogpgcheck localinstall ./proj1-1.0-1.x86_64.rpm ./libtest1-1.0-1.x86_64.rpm

と同じようにrpm

# cd <path with pkg files>; rpm -i proj1-1.0-1.x86_64.rpm libtest1-1.0-1.x86_64.rpm

これらyumrpm呼び出しの違いは、インストール対象としてリストされているパッケージの1つが、コマンドラインにリストされていないパッケージにさらに依存している場合にのみ表示されます。

このような場合rpm、続行を拒否するだけでyum、構成および有効化されたyumリポジトリーを使用して依存関係を検索し、おそらく成功する可能性があります。

現在の作業ディレクトリは、以前に有効なyumリポジトリとして構成されている場合を除き、どのような場合でも検索されません。


0

私はこれに遭遇し、私にとってうまくいったのyum localinstall enterPkgNameHere.rpmは、.rpmファイルが配置されているディレクトリ内から実行することでした。

注:をenterPkgNameHere.rpm.rpmファイルの名前に置き換えます。


0

openSUSE Leap 15の場合、同様のエラーが発生します:

> 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

このコマンドを実行して、依存関係を特定します。

> 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

次に、このコマンドを実行して依存関係をインストールします。

> 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

次に、これを実行してrpmファイルをインストールします。

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

これがベストプラクティスかどうかはわかりませんが、問題は解決しました。


0

手順1:所定の場所にすべてのrpmパッケージをコピーする

ステップ2:createrepoがまだインストールされていない場合は、デフォルトではインストールされないため、インストールします。

[root@pavangildamysql1 8.0.11_rhel7]# yum install createrepo

ステップ3:リポジトリmetedataを作成し、以下の許可を与える

[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

ステップ4:/etc/yum.repos.d/mysql.repoに以下の内容のリポジトリファイルを作成します

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

ステップ5このコマンドを実行してインストールします

[root@pavangildamysql1 local]# yum --nogpgcheck localinstall mysql-commercial-server-8.0.11-1.1.el7.x86_64.rpm


-5

ソースファイルからRPMを生成するプロセス:1)拡張子が.gzのソースファイルをダウンロードします。2)yum installからrpm-buildとrpmdevtoolsをインストールします。(rpmbuildフォルダーが生成されます... SPECS、SOURCES、RPMS ..フォルダーはrpmbuildフォルダー内に生成されます)。3)ソースcode.gzをSOURCESフォルダーにコピーします。(rpmbuild / SOURCES)4)次のコマンドを使用して、tarボールを解凍します。tarsファイルが存在するSOURCESフォルダー:rpmbuild / SOURCESに移動します。コマンド:たとえば、tar -xvzf httpd-2.22.tar.gz httpd-2.22フォルダーが同じパスに生成されます。aprとapr-utilがあり、httpd-2.22 / srclibフォルダーにあるかどうかを確認します。aprとapr-utilが存在しない場合は、Apacheサイトから最新バージョンをダウンロードし、それを解凍して、httpd-2.22 / srclibフォルダーに入れます。また、システムにpcre installがあることを確認してください。

5)抽出されたフォルダーに移動し、以下のコマンドを入力します:./configure --prefix = / usr / local / apache2 --with-included-apr --enable-proxy --enable-proxy-balancer --with-mpm = worker --enable-mods-static = all 6)構成が成功したら以下のコマンドを実行します。(checkinstallソフトウェアがない場合は、最新バージョンをサイトからダウンロードしてください)また、checkinstallソフトウェアにはバグがあり、次の方法で解決できます::::: checkinstallrcを見つけて、vimコマンドを使用してTRANSLATE = 1をTRANSLATE = 0に置き換えます。除外パッケージも確認します。EXCLUDE= "/ selinux" 8)checkinstallはオプションを要求します(ソースファイルにtp build rpmが必要な場合はRを入力します)9).rpmファイルがrpmbuild / RPMSファイル内のRPMSフォルダーにビルドされます。 .. ではごきげんよう ....

よろしく、プレラナ


誰かが何かを構築することについてどこで尋ねましたか?これは、すでにビルドされたRPMの依存関係を解決することに関するものでした。
クレイグジャクソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.