我已经构建了两个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
选项,但它对我不起作用。
还有其他办法吗?
感谢您的帮助。
答案 0 :(得分:176)
提供的@gertvdijk链接显示了一种快速实现所需结果的方法,而无需配置本地存储库:
$ yum --nogpgcheck localinstall packagename.arch.rpm
只需将packagename.arch.rpm
更改为您要安装的RPM文件名。
编辑只需澄清一下,这将自动安装已通过系统YUM存储库提供的所有依赖项。
如果您的其他RPM不满足系统存储库中的依赖关系,那么除非在命令行中同时指定每个RPM和packagename.arch.rpm
,否则此方法将无效。
答案 1 :(得分:93)
创建一个(本地)存储库并使用yum
让它为您解决依赖关系。
CentOS wiki有一个很好的页面提供了一个方法。 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
答案 2 :(得分:26)
对于dnf用户,只需使用dnf install *.rpm
,就不再需要localinstall
。
答案 3 :(得分:15)
对我来说只与
一起工作# 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
答案 4 :(得分:8)
我找到了一个更简单的解决方案。如果所有RPM都在同一目录中,那么您需要做的就是
$ sudo rpm -i *.rpm
rpm
似乎找出了安装这些并安装RPM的正确顺序。
答案 5 :(得分:2)
# 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
调用之间的差异只有在列出要安装的某个软件包对命令行中未列出的软件包具有进一步依赖性时才可见。
在这种情况下,rpm
将拒绝继续,而yum
将使用任何已配置和启用的yum存储库来搜索依赖项,并且可能会成功。
在任何情况下都不会搜索当前工作目录,除非之前已将其配置为已启用的yum
存储库。
答案 6 :(得分:0)
我遇到了这个问题,对我有用的是从.rpm文件所在的目录中运行yum localinstall enterPkgNameHere.rpm
。
注意:将enterPkgNameHere.rpm
替换为.rpm文件的名称。
答案 7 :(得分:0)
在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
我不确定这是否是最佳做法,但它解决了我的问题。
答案 8 :(得分:0)
步骤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
答案 9 :(得分:0)
将所有 RPM 复制到一个目录中,然后按如下方式安装:
yum install -y --cacheonly --disablerepo=* /var/rpm_dir/*.rpm
对于特定的包,您可以使用 yumdownloader
,例如在另一个线程中:https://stackoverflow.com/a/66927190/5078874
答案 10 :(得分:-1)
简单地运行以下命令。
sudo dnf install *package.rpm
输入您的密码,您就完成了。
答案 11 :(得分:-3)
从源文件生成RPM的过程: 1)下载源文件with.gz extention。 2)从yum install安装rpm-build和rpmdevtools。 (将生成rpmbuild文件夹...应在rpmbuild文件夹内生成SPECS,SOURCES,RPMS ..文件夹)。 3)将源代码.gz复制到SOURCES文件夹。(rpmbuild / SOURCES) 4)使用以下命令解开tar球。 转到SOURCES文件夹:rpmbuild / SOURCES,其中存在tar文件。 命令:例如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 --prefix = / usr / local / apache2 --with-included-apr --enable-proxy --enable-proxy-balancer --with-mpm = worker --enable-mods-static = all 6)配置成功后运行以下命令: 使 7)成功执行od make命令后: 检查安装 在同一个文件夹中。 (如果你没有checkinstall软件,请从网站下载最新版本) checkinstall软件也有bug,可以通过以下方式解决::::: 找到checkinstallrc,然后使用vim命令将TRANSLATE = 1替换为TRANSLATE = 0。 还要检查排除包:EXCLUDE =“/ selinux” 8)checkinstall会询问选项(如果你想要tp build rpm for source file,请输入R) 9)完成.rpm文件将在rpmbuild / RPMS文件中的RPMS文件夹中构建... 一切都好....
此致 Prerana