如何使rpm自动安装依赖关系

我已经build立了两个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的安装由于缺less依赖性而失败。

 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 

如何确保在安装proj1-1.0-1.x86_64.rpm期间自动安装proj1-1.0-1.x86_64.rpm

我已经按照这里描述的方式尝试了rpm -i--aid选项,但是这对我没有任何作用。

有没有其他的方法?

谢谢你的帮助。

创build一个(本地)存储库,并使用yum让它解决你的依赖关系。

CentOS wiki有一个很好的页面,提供了一个如何做到这一点。 CentOS wiki HowTos / CreateLocalRepos 。


总结并进一步最小化(不理想,但最快):

  1. 为本地存储库创build一个目录,例如/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. 创build一个存储库configuration文件,例如/etc/yum.repos.d/myrepo.repo包含

     [local] name=My Awesome Repo baseurl=file:///home/user/repo enabled=1 gpgcheck=0 
  6. 使用安装你的软件包

     # yum install packagename 

提供的链接@gertvdijk显示了一个快速的方法来实现所需的结果,而无需configuration本地存储库:

 $ yum --nogpgcheck localinstall packagename.arch.rpm 

只需将packagename.arch.rpm更改为要安装的RPM文件名即可。

编辑只是一个澄清,这将自动安装已经通过系统YUM存储库可用的所有依赖项。

如果您的系统存储库中没有其他RPM所满足的依赖关系,则此方法将不起作用,除非每个RPM在命令行上还与packagename.arch.rpm一起指定。

对于dnf用户只需使用dnf install *.rpmlocalinstall就不再需要了。

对于我来说,工作

 # 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 

我find一个更简单的解决scheme。 如果你把所有的RPM都放在同一个目录下,你只需要做,

 $ sudo rpm -i *.rpm 

rpm似乎找出正确的顺序来安装这些和安装的RPM。

我遇到了这个,对我来说工作是从.rpm文件所在的目录中运行yum localinstall enterPkgNameHere.rpm

注意:用您的.rpm文件的名称replaceenterPkgNameHere.rpm

从源文件生成RPM的过程:

  1. 使用.gz扩展下载源文件。
  2. 从yum install安装rpm-build和rpmdevtools。 (rpmbuild文件夹将被生成… SPECS,SOURCES,RPMS ..文件夹将在rpmbuild文件夹内生成)。
  3. 将source code.gz复制到SOURCES文件夹(rpmbuild / SOURCES)
  4. 使用以下命令解开焦油球。
    • 转到SOURCES文件夹:rpmbuild / SOURCES其中存在tar文件。 命令:例如tar -xvzf httpd-2.22.tar.gz httpd-2.22文件夹将会在同一个path下生成。 检查apr和apr-util,然后在httpd-2.22 / srclib文件夹中。 如果apr和apr-util不存在,请从apache站点下载最新版本,解压并将其放入httpd-2.22 / srclib文件夹中。 另外请确保你已经安装在你的系统中。
  5. 转到提取的文件夹,然后input以下命令: ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-proxy --enable-proxy-balancer --with-mpm=worker --enable-mods-static=all
  6. 一旦configuration成功,运行下面的命令: make
  7. make命令运行成功执行后:checkinstall在同一个文件夹中。 (如果你没有checkinstall软件,请从网站上下载最新版本)checkinstall软件有bug可以通过以下方式解决:findcheckinstallrc,然后用vim命令replaceTRANSLATE = 1到TRANSLATE = 0。 还要检查排除软件包:EXCLUDE =“/ selinux”
  8. checkinstall会询问选项(如果你想为源文件build立rpm,请键入R)
  9. 完成! .rpm文件将被build立在rpmbuild / RPMS文件内的RPMS文件夹中。