it-swarm-ja.com

rpmを自動インストールの依存関係にする方法

私は2つのRPMパッケージを作りました

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

proj1は存在するファイルlibtest1.soに依存します、そしてそれはここで見られるようにRPMパッケージに正しく反映されます:

[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)

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

[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

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

here に記述されているように、--aidオプションをrpm -iと一緒に試しましたが、うまくいきませんでした。

他に方法はありますか?

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

124
HAL

(ローカル)リポジトリを作成し、yumを使用して依存関係を解決してください。

CentOSウィキには、これに関するハウツーを提供するNiceページがあります。 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
    
94
gertvdijk

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

$ yum --nogpgcheck localinstall packagename.Arch.rpm

packagename.Arch.rpmをインストールしたいRPMファイル名に変更するだけです。

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

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

177
Matthew

Dnfユーザーの場合はdnf install *.rpmを使用するだけで、localinstallは不要になりました。

26
mimoralea

私は一緒に働いた

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

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

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

$ Sudo rpm -i *.rpm

rpmはこれらをインストールする正しい順序を見つけ出し、RPMをインストールするようです。

8
Rajaram

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

# 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

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

そのような場合、rpmは継続を拒否するだけですが、yumは依存関係を検索するために設定され有効化されたyumリポジトリを使用し、成功する可能性があります。

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

2
Artur Opalinski

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
user3405291

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

注:enterPkgNameHere.rpmをあなたの.rpmファイルの名前に置き換えてください。

0
specialk1st

ステップ1:指定の場所にあるすべてのrpm pkgをコピーします。

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

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

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

[[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

ステップ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このコマンドを実行してインストールします

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