私は2つのRPMパッケージを作りました
proj1-1.0-1.x86_64.rpm
libtest1-1.0-1.x86_64.rpm
proj1
は存在するファイルlibtest1.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
が自動的にインストールされるようにするにはどうすればよいですか?
here に記述されているように、--aid
オプションをrpm -i
と一緒に試しましたが、うまくいきませんでした。
他に方法はありますか?
助けてくれてありがとう。
(ローカル)リポジトリを作成し、yum
を使用して依存関係を解決してください。
CentOSウィキには、これに関するハウツーを提供するNiceページがあります。 CentOS WikiのHowTos/CreateLocalRepos 。
要約し、さらに最小化します(理想的ではありませんが、最も速い)。
/home/user/repo
。いくつかの所有権とファイルシステムの権限を修正します。
# chown -R root.root /home/user/repo
まだインストールされていない場合はcreaterepo
パッケージをインストールし、実行します。
# createrepo /home/user/repo
# chmod -R o-w+r /home/user/repo
リポジトリ設定ファイルを作成します。 /etc/yum.repos.d/myrepo.repo
を含む
[local]
name=My Awesome Repo
baseurl=file:///home/user/repo
enabled=1
gpgcheck=0
を使ってパッケージをインストールする
# yum install packagename
提供されているリンク@gertvdijkは、ローカルリポジトリを設定せずに目的の結果を達成するための簡単な方法を示しています。
$ yum --nogpgcheck localinstall packagename.Arch.rpm
packagename.Arch.rpm
をインストールしたいRPMファイル名に変更するだけです。
編集明確にすると、これはシステムのYUMリポジトリですでに利用可能なすべての依存関係を自動的にインストールします。
システムのリポジトリにない他のRPMによって依存関係が満たされる場合、このメソッドは各RPMがpackagename.Arch.rpm
とともにコマンドラインでも指定されない限り機能しません。
Dnfユーザーの場合はdnf install *.rpm
を使用するだけで、localinstall
は不要になりました。
私は一緒に働いた
# 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
私はもっと簡単な解決策を見つけました。すべてのRPMが同じディレクトリにある場合は、必要な作業は次のとおりです。
$ Sudo rpm -i *.rpm
rpm
はこれらをインストールする正しい順序を見つけ出し、RPMをインストールするようです。
マシューの答えは、まだ細かいことには欠けているという事実のために、多くの感情を呼び起こしました。一般的なコマンドは次のようになります。
# 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
リポジトリとして以前に設定されている場合を除き、いかなる場合でも検索されません。
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
私はそれがベストプラクティスであるかどうかわからない、しかしそれは私の問題を解決しました。
私はこれに遭遇し、私のために働いたのは.rpmファイルが配置されているディレクトリの中からyum localinstall enterPkgNameHere.rpm
を実行することでした。
注:enterPkgNameHere.rpm
をあなたの.rpmファイルの名前に置き換えてください。
ステップ1:指定の場所にあるすべてのrpm pkgをコピーします。
ステップ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