目录

零、情景介绍

一、下载 RPM 包

1、安装包的选择

2、rpm包的命名规则

二、传输rpm包到CentOs主机上

三、安装rpm包的工具

1、安装

2、查询

3、卸载

四、安装rpm

五、相关问题

1、循环依赖

2、文件冲突


零、情景介绍

        正常情况下我们都习惯在线安装,使用譬如 yum 或 apt 等安装工具。但在内外环境下只能通过下载源码或者编译好的安装包安装,安装过程中会提示各类依赖的缺失等问题。下面将完整的介绍从下载 rpm 包,到传输文件到 centos主机上,再到安装离线安装包,以及安装过程中会出现的问题的解决的过程。

        整个过程是在实际使用中总结的,可以尝试使用,若出现解决不了的问题可以留言讨论。

一、下载 RPM 包

        下面提供两个在线下载安装包的网站,推荐使用阿里的,下载速度更快。

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)https://developer.aliyun.com/mirror/Packages for Linux and Unix - pkgs.orghttps://pkgs.org/

1、安装包的选择

        发行版:

                el7 为 centos7;

                el8 为 centos8;

        架构:

                aarch64(ARM)

                x86_64 (x86)

archuname

centos7离线安装docker容器 centos 离线安装_centos7离线安装docker容器

2、rpm包的命名规则

 openssh-server-7.4p1-21.el7.aarch64.rpm

字段

说明

openssh-server

软件包名

7.4p1

软件版本

21

软件发行的次数

el7

适合的linux平台

aarch64

适合的硬件平台

rpm

rpm包扩展名

二、传输rpm包到CentOs主机上

        很多情况下需要离线安装的linux主机大多在内网环境下,无法使用网络。我们可以通过windows(Linux)主机将安装包发送到目标 Centos 主机上。而且由于内网主机可能是刚安装的,环境一片空白。所以传输文件只能使用最基础的工具。下面以windows向Centos传输为例。

        我个人使用的 scp,使用起来十分方便。

        在windows主机上文件所在目录打开cmd,输入如下命令即可完成传输。需要注意的是,windows与linux主机需要位于同一局域网下,可以 ping 一下,ping 通即可。

scp gcc.rpm tp@192.168.10.10:~/gcc.rpm

        执行如上语句,会将 gcc.rpm 传输到 Centos 主机的 home 目录下。

三、安装rpm包的工具

        centos下使用 rpm 的安装工具。具体的使用命令如下:

1、安装

rpm -ivh 包全名
#选项:
#    -i(install)    安装
#    -v(verbose)    显示详细信息
#    -h(hash)       显示进度
#    --nodeps       不检测依赖性

2、查询

#选项
# -q    查询(query)
# -a    所有
# -i    查询软件信息(information)
# -l    列表(list)
# -f    查询系统文件属于哪个RPM包(file)
# -R    查询软件包的依赖性(requires)

# 单个包查询
rpm -q 包名

# 查询所有包
rpm -qa

# 查询包详情
rpm -qi 包名

# 安装位置
rpm -ql 包名

# 查询系统文件属于哪个RPM包
rpm -qf 系统文件名

# 查询软件包的依赖性
rpm -qR 包名

3、卸载

rpm -e 包名
#选项:
#    -e (erase)    卸载
#    --nodeps      不检测依赖性

四、安装rpm

sudo rpm -ivh net-tools.rpm

        因为net-tools的依赖较少,而且centos都支持,所以执行上面的语句即可完成。

        实际使用中,仅仅下载一个安装包大多情况下无法一次性安装成功,每个软件都存在大量的依赖。一般的解决办法是缺啥补啥,注意以来的版本,需要满足最低需求。

        日后我会编写个爬虫软件,自动爬取软件的所有依赖,并生成安装脚本。留个坑,嘿嘿。

五、相关问题

1、循环依赖

        举例:安装 iscsi,需要下载两个 rpm 包,但依次安装时提示如下,这两个 rpm 包相互依赖了。

centos7离线安装docker容器 centos 离线安装_rpm包_02

        解决的办法,就是将循环依赖的包,一起安装,都放在 -ivh 参数后面。如下所示:

sudo rpm -ivh iscsi-initiator-utils.rpm iscsi-initiator-utils-iscsiuio.rpm

centos7离线安装docker容器 centos 离线安装_rpm包_03

2、文件冲突

        在安装 rpm 安装包时偶尔会报如下错误,即文件冲突的错误

centos7离线安装docker容器 centos 离线安装_centos7离线安装docker容器_04

        解决办法,冲突时进行替换:

sudo rpm -ivh --replacefiles openssh-server.rpm

centos7离线安装docker容器 centos 离线安装_rpm包_05