如何使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 。
总结并进一步最小化(不理想,但最快):
- 为本地存储库创build一个目录,例如
/home/user/repo
。 - 将RPM移动到该目录。
-
修复一些所有权和文件系统权限:
# chown -R root.root /home/user/repo
-
如果尚未安装,请安装
createrepo
软件包,然后运行# createrepo /home/user/repo # chmod -R o-w+r /home/user/repo
-
创build一个存储库configuration文件,例如
/etc/yum.repos.d/myrepo.repo
包含[local] name=My Awesome Repo baseurl=file:///home/user/repo enabled=1 gpgcheck=0
-
使用安装你的软件包
# yum install packagename
提供的链接@gertvdijk显示了一个快速的方法来实现所需的结果,而无需configuration本地存储库:
$ 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
我find一个更简单的解决scheme。 如果你把所有的RPM都放在同一个目录下,你只需要做,
$ sudo rpm -i *.rpm
rpm
似乎找出正确的顺序来安装这些和安装的RPM。
我遇到了这个,对我来说工作是从.rpm文件所在的目录中运行yum localinstall enterPkgNameHere.rpm
。
注意:用您的.rpm文件的名称replaceenterPkgNameHere.rpm
。
从源文件生成RPM的过程:
- 使用.gz扩展下载源文件。
- 从yum install安装rpm-build和rpmdevtools。 (rpmbuild文件夹将被生成… SPECS,SOURCES,RPMS ..文件夹将在rpmbuild文件夹内生成)。
- 将source code.gz复制到SOURCES文件夹(rpmbuild / SOURCES)
- 使用以下命令解开焦油球。
- 转到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文件夹中。 另外请确保你已经安装在你的系统中。
- 转到SOURCES文件夹:rpmbuild / SOURCES其中存在tar文件。 命令:例如
- 转到提取的文件夹,然后input以下命令:
./configure --prefix=/usr/local/apache2 --with-included-apr --enable-proxy --enable-proxy-balancer --with-mpm=worker --enable-mods-static=all
- 一旦configuration成功,运行下面的命令:
make
- make命令运行成功执行后:checkinstall在同一个文件夹中。 (如果你没有checkinstall软件,请从网站上下载最新版本)checkinstall软件有bug可以通过以下方式解决:findcheckinstallrc,然后用vim命令replaceTRANSLATE = 1到TRANSLATE = 0。 还要检查排除软件包:EXCLUDE =“/ selinux”
- checkinstall会询问选项(如果你想为源文件build立rpm,请键入R)
- 完成! .rpm文件将被build立在rpmbuild / RPMS文件内的RPMS文件夹中。