如何使转速自动安装依赖

我已经建立了两个 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的安装?

我尝试了 --aid选项与 rpm -i描述的 给你,但它不适合我。

还有别的办法吗?

谢谢你的帮助。

575505 次浏览

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

CentOS wiki 有一个很好的页面,提供了这方面的操作指南。


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

  1. 为您的本地存储库创建一个目录,例如 /home/user/repo
  2. 将 RPM 移动到该目录中。
  3. 修正一些所有权和访问许可权:

    # chown -R root.root /home/user/repo
    
  4. Install the createrepo package if not installed yet, and run

    # createrepo /home/user/repo
    # chmod -R o-w+r /home/user/repo
    
  5. Create a repository configuration file, e.g. /etc/yum.repos.d/myrepo.repo containing

    [local]
    name=My Awesome Repo
    baseurl=file:///home/user/repo
    enabled=1
    gpgcheck=0
    
  6. Install your package using

    # yum install packagename
    

提供的 link@gertvdijk 展示了一种不用配置本地存储库就能实现所需结果的快速方法:

$ yum --nogpgcheck localinstall packagename.arch.rpm

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

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

如果其他 RPM 满足了不在系统存储库中的依赖关系,那么除非在命令行上同时指定了每个 RPM 和 packagename.arch.rpm,否则这个方法将无法工作。

我找到了更简单的解决办法。如果所有的 RPM 都在同一个目录中,那么只需要,

$ sudo rpm -i *.rpm

rpm似乎找到了正确的安装顺序,并安装了 RPM。

对于 dnf 用户,只需使用 dnf install *.rpm,就不再需要 localinstall

对我来说,只是工作

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

并自动请求授权下载依赖项。 下面的例子中,我使用的是软呢帽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

我遇到了这种情况,对我有效的方法是从。Rpm 文件已定位。

注意: 将 enterPkgNameHere.rpm替换为. rpm 文件的名称。

从源文件生成 RPM 的过程: 1)下载扩展名为.gz 的源文件。 2)从 yum install 安装 rpm-build 和 rpmdevtools。(rpmbuild 文件夹将生成... SPECS,SOURCES,RPMS。.文件夹将在 rpmbuild 文件夹中生成)。 3)将源代码.gz 复制到 SOURCES 文件夹 4)使用以下命令解除焦油球。 转到 SOURCES 文件夹: rpmbuild/SOURCES,其中存在 tar 文件。 命令: e.g 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-include-apr —— able-xy —— able-xy-balancer —— with-mpm = worker —— able-mods-static = all 6)一旦配置成功,在命令下运行: 制造 7)在成功执行之后 make command run: Checkinstall 检查安装 在同一个文件夹。(如果你没有检查安装软件请从网站下载最新版本) 此外,checkinstall 软件也存在 bug,可以通过以下方式解决: : : : : 使用 vim 命令定位 checkinstallrc,然后将 TRANSLATE = 1替换为 TRANSLATE = 0。 还要检查排除包: EXCLUDE = “/selinux” 8) checkinstall 会询问选项(如果你想要 tp build rpm for source file,输入 R) 9)完成。 rpm 文件将建立在 rpmbuild/RPMS 文件内的 RPMS 文件夹..。 祝你一切顺利。

问候, 普雷拉纳

马太的回答唤醒了许多人的情绪,因为它仍然缺乏一个小细节。 总指挥是:

# 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

这些 yumrpm调用之间的差异只有在列出的要安装的软件包之一与命令行中未列出的软件包有进一步依赖关系的情况下才能看到。

在这种情况下,rpm将拒绝继续,而 yum将使用任何配置和启用的 yum 存储库来搜索依赖项,并且可能成功。

当前的工作目录不会在任何情况下被搜索,除非它以前被配置为启用的 yum存储库。

简单,只需运行以下命令。

sudo dnf install *package.rpm

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

在 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

我的 没有肯定,如果这是最好的做法,但它解决了我的问题。

Step1: 复制指定地点的所有转速/千克

步骤2: 如果 createrepo 还没有安装,因为默认情况下它不会安装,那么安装它。

[root@pavangildamysql1 8.0.11_rhel7]# yum install createrepo

步骤3: 创建存储库转移数据并给予以下权限

[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.Rep.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

将所有 RPM 复制到一个目录中,然后按如下方式安装:

yum install -y --cacheonly --disablerepo=* /var/rpm_dir/*.rpm

对于特定的包,您可以使用 yumdownloader,例如在另一个线程中: https://stackoverflow.com/a/66927190/5078874