HAL*_*HAL 130 linux installation rpm yum package
我已经构建了两个RPM包
proj1-1.0-1.x86_64.rpmlibtest1-1.0-1.x86_64.rpmproj1取决于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)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如何确保libtest1-1.0-1.x86_64.rpm在安装过程中自动安装proj1-1.0-1.x86_64.rpm?
我确实尝试了这里描述的--aid选项,但它对我不起作用.rpm -i
还有其他方法吗?
谢谢你的帮助.
Mat*_*hew 188
提供的@gertvdijk链接显示了一种快速方法,无需配置本地存储库即可实现所需的结果:
$ yum --nogpgcheck localinstall packagename.arch.rpm
Run Code Online (Sandbox Code Playgroud)
只需更改packagename.arch.rpm为要安装的RPM文件名即可.
编辑只需澄清一下,这将自动安装已通过系统YUM存储库提供的所有依赖项.
如果您的其他RPM不满足系统的存储库中的依赖关系,则除非packagename.arch.rpm在命令行中同时指定每个RPM,否则此方法将不起作用.
ger*_*ijk 99
创建一个(本地)存储库并使用yum它来解决您的依赖关系.
CentOS wiki有一个很好的页面提供了一个方法.CentOS wiki HowTos/CreateLocalRepos.
总结并进一步最小化(不理想,但最快):
/home/user/repo.修复一些所有权和文件系统权限:
# chown -R root.root /home/user/repo
Run Code Online (Sandbox Code Playgroud)createrepo如果尚未安装,请安装软件包,然后运行
# createrepo /home/user/repo
# chmod -R o-w+r /home/user/repo
Run Code Online (Sandbox Code Playgroud)创建存储库配置文件,例如/etc/yum.repos.d/myrepo.repo包含
[local]
name=My Awesome Repo
baseurl=file:///home/user/repo
enabled=1
gpgcheck=0
Run Code Online (Sandbox Code Playgroud)使用安装包
# yum install packagename
Run Code Online (Sandbox Code Playgroud)mim*_*lea 26
对于dnf用户而言dnf install *.rpm,localinstall不再需要使用.
小智 19
对我来说,只是为了工作
# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)
并自动要求授权下载依赖项.在示例下面,我使用的是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
Run Code Online (Sandbox Code Playgroud)
小智 9
我发现了一个更简单的解决方案 如果所有RPM都在同一目录中,那么您需要做的就是,
$ sudo rpm -i *.rpm
Run Code Online (Sandbox Code Playgroud)
rpm 似乎找出了安装这些并安装RPM的正确顺序.
马修的回答唤醒了很多情绪,因为它仍然缺乏一个小细节。一般命令是:
# yum --nogpgcheck localinstall <package1_file_name> ... <packageN_file_name>
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
会做,也会做rpm:
# cd <path with pkg files>; rpm -i proj1-1.0-1.x86_64.rpm libtest1-1.0-1.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)
只有当列出的要安装的包之一对命令行中未列出的包有进一步的依赖时,这些yum和rpm调用之间的差异才会可见。
在这种情况下rpm只会拒绝继续,而yum会使用任何已配置和启用的 yum 存储库来搜索依赖项,并且可能会成功。
在任何情况下都不会搜索当前工作目录,除非它之前已配置为启用的yum存储库。
| 归档时间: |
|
| 查看次数: |
420366 次 |
| 最近记录: |