我已经建了两个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
?
我曾尝试--aid
与选择rpm -i
描述在这里 ,但它并没有为我工作。
有没有其他办法?
谢谢你的帮助。
Answer 1:
创建(本地)存储库并使用yum
把它解决依赖性为您服务。
CentOS的维基有一个漂亮的网页提供有关这个如何做。 CentOS的维基的HOWTOs / CreateLocalRepos 。
总结和进一步降低(不理想,但最快的):
- 创建你的本地库,例如目录
/home/user/repo
。 - 移动的RPM到该目录中。
修正了一些所有权和文件系统权限:
# 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
Answer 2:
提供的链接@gertvdijk显示了一个快速的方法来达到理想的效果,而无需配置本地资源库:
$ yum --nogpgcheck localinstall packagename.arch.rpm
只要改变packagename.arch.rpm
到要安装RPM文件名。
编辑刚刚澄清,这将自动安装已经通过系统YUM存储库中所有可用的依赖关系。
如果您有由不在系统的信息库其他RPM满足的依赖关系,那么这种方法是行不通的,除非每个RPM也与沿指定packagename.arch.rpm
在命令行上。
Answer 3:
对于DNF用户只需使用dnf install *.rpm
, localinstall
不再需要。
Answer 4:
对于我的工作只是与
# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm
并自动要求授权下载中心的depedencies。 下面的例子中,我使用的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
Answer 5:
我发现了一个简单的解决方案。 如果你在同一个目录下的所有RPM,所有你需要做的是,
$ sudo rpm -i *.rpm
rpm
似乎搞清楚正确的顺序安装这些并安装RPM。
Answer 6:
马修的答案醒了太多的情绪,因为事实上,它仍然缺少一个小细节。 一般的命令是:
# yum --nogpgcheck localinstall <package1_file_name> ... <packageN_file_name>
所述package_file_name
以上可包括本地绝对或相对路径,或者是一个URL(甚至可能的URI)。
将百胜搜索在命令行上给出的所有程序包文件之间的依赖关系,如果它未能找到的依赖关系存在,它也将使用任何配置并启用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
它们之间的differencve yum
和rpm
调用只会是可见的,如果上市要安装的程序包的一个已经在命令行中未列出的软件包的依赖进一步。
在这种情况下rpm
只会拒绝继续,而yum
将使用任何配置并启用的yum存储库来搜索依赖,并有可能获得成功。
当前的工作目录不会被搜索在任何情况下,当它已经预先配置为启用除yum
库。
Answer 7:
我遇到了这一点,什么工作对我来说是跑yum localinstall enterPkgNameHere.rpm
从那里的.rpm文件所在的目录中。
注意:更换enterPkgNameHere.rpm
与你的.rpm文件的名称。
Answer 8:
在openSUSE的飞跃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
我不知道这是否是最好的做法,但它解决了我的问题。
Answer 9:
第一步:复制所有的rpm PKG在给定的位置
第二步:如果尚未安装createrepo,因为它不会被默认安装。
[root@pavangildamysql1 8.0.11_rhel7]# yum install createrepo
第三步:创建库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
第四步:与/etc/yum.repos.d/mysql.repo以下内容创建库文件
[local]
name=My Awesome Repo
baseurl=file:///scratch/PVN/8.0.11_rhel7
enabled=1
gpgcheck=0
第五步:运行该命令安装
[root@pavangildamysql1 local]# yum --nogpgcheck localinstall mysql-commercial-server-8.0.11-1.1.el7.x86_64.rpm
Answer 10:
简单只需运行下面的命令。
sudo dnf install *package.rpm
输入您的密码和你做。
Answer 11:
1)下载源文件with.gz extention:从源文件生成的RPM过程。 2)从百胜安装安装rpm-build程序和rpmdevtools。 (文件夹的rpmbuild将产生...规范,来源,RPMS ..文件夹将应在文件夹的rpmbuild内部产生)。 3)通过使用以下命令复制源code.gz到源文件夹。(的rpmbuild / SOURCES)4)解压焦油球。 去源文件夹:的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你的系统安装。
5)去提取的文件夹,然后键入以下命令:的./configure前缀=的/ usr /本地/ apache2的--with-包括-APR --enable代理--enable代理平衡器--with-MPM =工人--enable-MODS的静电=所有6)运行下面的命令一旦配置成功:使7)后全成执行OD使命令运行:检查安装在塔相同的文件夹。 (如果你没有检查安装的软件,请下载从网站上最新版本)还检查安装的软件有BUG,可以通过以下方式解决:::::定位checkinstallrc然后更换翻译= 1使用vim命令翻译= 0。 同时检查排除包:排除=“/ SELinux的” 8)检查安装会询问选项(R型,如果你想TP建立源文件转)9)完成的.rpm文件将在里面的rpmbuild / RPMS文件夹RPMS建成。 .. 祝一切顺利 ....
问候,Prerana
文章来源: How to make rpm auto install dependencies