如何使转速自动安装依赖

问题描述 投票:121回答:11

我已经建了两个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 -ihere选项,但它并没有为我工作。

有没有其他办法?

谢谢你的帮助。

linux installation package rpm yum
11个回答
96
投票

创建(本地)存储库并使用yum把它解决依赖性为您服务。

CentOS的维基有一个漂亮的网页提供有关这个如何做。 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

-1
投票

简单只需运行下面的命令。

sudo dnf install *package.rpm

输入您的密码和你做。


-3
投票

1)下载源文件with.gz extention:从源文件生成的RPM过程。 2)从百胜安装安装rpm-build程序和rpmdevtools。 (文件夹的rpmbuild将产生...规范,来源,RPMS ..文件夹将应在文件夹的rpmbuild内部产生)。 3)通过使用以下命令复制源code.gz到源文件夹。(的rpmbuild / SOURCES)4)解压焦油球。去源文件夹:的rpmbuild / SOURCES其中tar文件是否存在。命令:e.g焦油-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前缀=的/ usr /本地/ apache2的--with-包括-APR --enable代理--enable代理平衡器--with-MPM =工人--enable-MODS的静电=所有6)运行下面的命令一旦配置成功:使7)后全成执行OD使命令运行:检查安装在塔相同的文件夹。 (如果你没有检查安装的软件,请下载从网站上最新版本)还检查安装的软件有BUG,可以通过以下方式解决:::::定位checkinstallrc然后更换翻译= 1使用vim命令翻译= 0。同时检查排除包:排除=“/ SELinux的” 8)检查安装会询问选项(R型,如果你想TP建立源文件转)9)完成的.rpm文件将在里面的rpmbuild / RPMS文件夹RPMS建成。 .. 祝一切顺利 ....

问候,灵感


182
投票

提供的链接@gertvdijk显示了一个快速的方法来达到理想的效果,而无需配置本地资源库:

$ yum --nogpgcheck localinstall packagename.arch.rpm

只要改变packagename.arch.rpm到要安装RPM文件名。

编辑刚刚澄清,这将自动安装已经通过系统YUM存储库中所有可用的依赖关系。

如果您有由不在系统的信息库其他RPM满足的依赖关系,那么这种方法是行不通的,除非每个RPM也与在命令行上packagename.arch.rpm沿指定。


26
投票

对于DNF用户只需使用dnf install *.rpmlocalinstall不再需要。


16
投票

对于我的工作只是与

# 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

9
投票

我发现了一个简单的解决方案。如果你在同一个目录下的所有RPM,所有你需要做的是,

$ sudo rpm -i *.rpm

rpm似乎搞清楚正确的顺序安装这些并安装RPM。


3
投票

马修的答案醒了太多的情绪,因为事实上,它仍然缺少一个小细节。一般的命令是:

# yum --nogpgcheck localinstall <package1_file_name> ... <packageN_file_name>

上述package_file_name可以包括本地绝对或相对路径,或者是一个URL(甚至可能的URI)。

百胜将搜索命令行给出的所有程序包文件之间的依赖关系,如果它未能找到的依赖关系存在,它也将使用任何配置并启用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调用之间的differencve只会是可见的,如果上市要安装的程序包的一个已经在命令行中未列出的软件包的依赖进一步。

在这种rpm只会拒绝继续,而yum会使用任何配置并启用的yum存储库来搜索依赖,并有可能取得成功的案例。

当前的工作目录不会被搜索在任何情况下,当它已经预先配置为启用yum库除外。


0
投票

我就遇到了这个,什么工作对我来说是从哪里的.rpm文件所在的目录中运行yum localinstall enterPkgNameHere.rpm

注意:您的.rpm文件的名称替换enterPkgNameHere.rpm


0
投票

在openSUSE的飞跃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

我不知道这是否是最好的做法,但它解决了我的问题。


0
投票

步骤1:复制所有rpm包在给定位置

第二步:如果尚未安装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

第四步:与/etc/yum.repos.d/mysql.repo以下内容创建库文件

[local]
name=My Awesome Repo
baseurl=file:///scratch/PVN/8.0.11_rhel7
enabled=1
gpgcheck=0

第五步:运行该命令安装

[root@pavangildamysql1 local]# yum --nogpgcheck localinstall mysql-commercial-server-8.0.11-1.1.el7.x86_64.rpm
© www.soinside.com 2019 - 2024. All rights reserved.