linux - yum安装rpm包 - yum安装本地rpm




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

从源文件生成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文件夹中的相同路径。 检查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. 一旦配置成功,运行下面的命令: make
  7. 在make命令运行成功执行后:checkinstall在同一文件夹中。 (如果您没有checkinstall软件,请从站点下载最新版本)checkinstall软件还有一些bug可以通过以下方式解决:找到checkinstallrc,然后使用vim命令替换TRANSLATE = 1到TRANSLATE = 0。 还要检查排除软件包:EXCLUDE =“/ selinux”
  8. checkinstall会询问选项(如果你想为源文件建立rpm,请键入R)
  9. 完成! .rpm文件将建立在rpmbuild / RPMS文件内的RPMS文件夹中。

我已经构建了两个RPM包

  • proj1-1.0-1.x86_64.rpm
  • libtest1-1.0-1.x86_64.rpm

proj1取决于libtest1.so文件存在,它正确地反映在RPM包中,如下所示:

[email protected]:~$ rpm -qp --requires proj1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

[email protected]:~$ rpm -qp --provides libtest1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

由于缺少依赖关系, proj1的安装失败。

[email protected]:~$ 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

按照here描述的方法,我尝试使用rpm -i--aid选项,但它对我无效。

有没有其他方法?

谢谢你的帮助。


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

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

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

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

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

    # yum install packagename
    

对我来说就是合作

# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm

并自动要求授权降低依赖性。 下面的例子中,我使用的是fedora 22

[[email protected] 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

我找到了更简单的解决方案。 如果你把所有的RPM都放在同一个目录中,你所需要做的就是,

$ sudo rpm -i *.rpm

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


提供的链接@gertvdijk显示了一种快速方法,无需配置本地存储库即可实现所需的结果:

$ yum --nogpgcheck localinstall packagename.arch.rpm

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

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

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


简单地运行下面的命令。

sudo dnf install *package.rpm

输入你的密码,你就完成了。





yum