CentOS离线安装RPM及其依赖包

1,219 阅读2分钟

公司机器一般情况下都是内网,那么这时候如何安装软件呢,如果只是几个 rpm 包,手动下载还是能接受的,但是如果是大量依赖呢?这时候 repotrack 就很好的解决了我们的问题。

一、准备环境

创建了一个虚拟机和内网机器版本差不多。可以使用这个命令查看: cat /etc/redhat-release

# 外网
[root@localhost rpms]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
# 内网
[ambari@bigdata1 ~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

接下来以安装 redhad-lsb 为例(以下命令均在root用户、或具有sudo权限的用户下执行)

二、下载相关 rpm 包

在外网机器中,使用 repotrack 下载包(-p 指定保存路径)

repotrack -p ./redhat-lsb-4.1-27.el7.centos.1.x86_64 redhat-lsb

三、建立 yum 本地仓库、并上传到内网环境

# -v 显示过程
createrepo -v redhat-lsb-4.1-27.el7.centos.1.x86_64/

执行完目录中就多了一个目录:

drwxr-xr-x. 2 root root     4096 Oct 29 19:39 repodata

然后打包

tar zcvf redhat-lsb-4.1-27.el7.centos.1.x86_64.tar.gz redhat-lsb-4.1-27.el7.centos.1.x86_64

将打好的包上传到内网环境中。

四、搭建本地 yum 源

4.1 单机版本

和局域网差不多,只是修改了一下本地源地址(4.2.4章节)

# 改成本地路径,不过只能用于单个机器
baseurl=file:///root/redhat-lsb-4.1-27.el7.centos.1.x86_64

4.2 局域网版本

4.2.1 安装 httpd 服务

  1. 关闭防火墙

    # 关闭防火墙
    sudo systemctl stop firewalld.service
    # 查看状态
    systemctl status firewalld.service
    # 关闭开机自启
    sudo systemctl disable firewalld.service
    
  2. 关闭 SELINUX

    # 临时关闭SELINUX(master node)
    sudo setenforce 0
    
    # 永久关闭则需要修改配置文件,【并重启机器】
    sudo vi /etc/selinux/config
    ​
    # SELINUX=enforcing修改为
    SELINUX=disabled
    
  3. 安装 httpd 服务

    按顺序安装以下 rpm 包:

    sudo rpm -ivh apr-1.4.8-7.el7.x86_64.rpm
    sudo rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
    sudo rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm
    sudo rpm -ivh httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
    sudo rpm -ivh httpd-2.4.6-95.el7.centos.x86_64.rpm
    

    下载地址:(可以用迅雷下载会快一些,也可以用国内阿里镜像)

    http://mirror.centos.org/centos/7/os/x86_64/Packages/apr-1.4.8-7.el7.x86_64.rpm
    http://mirror.centos.org/centos/7/os/x86_64/Packages/apr-util-1.5.2-6.el7.x86_64.rpm
    http://mirror.centos.org/centos/7/os/x86_64/Packages/mailcap-2.1.41-2.el7.noarch.rpm
    http://mirror.centos.org/centos/7/os/x86_64/Packages/httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
    http://mirror.centos.org/centos/7/os/x86_64/Packages/httpd-2.4.6-95.el7.centos.x86_64.rpm
    
  4. 启动服务、查看状态、设置开机自启

    sudo systemctl start httpd
    systemctl status httpd
    sudo systemctl enable httpd
    

4.2.2 上传解压安装包

sudo mkdir -p /var/www/html/rpms
sudo tar -zxvf redhat-lsb-4.1-27.el7.centos.1.x86_64.tar.gz -C /var/www/html/rpms/

4.2.3 访问 WEB

访问地址,就能看到我们上传的内容了:http://内网主机地址/rpms

image-20221029201650587

4.2.4 设置本地源地址

# 创建备份目录
sudo mkdir /etc/yum.repos.d_tmp
# 进入目录
cd /etc/yum.repos.d/
# 将原有的配置移动到备份目录,因为不能联网不可用
sudo mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d_tmp/

编辑 repo 文件:

sudo vi /etc/yum.repos.d/rpms.repo
​
# 添加以下内容
[redhat-lsb-4.1-27.el7.centos.1.x86_64]
name=redhat-lsb-4.1-27.el7.centos.1.x86_64
baseurl=http://主机地址/rpms/redhat-lsb-4.1-27.el7.centos.1.x86_64/
enabled=1
gpgcheck=0

清理缓存

sudo yum clean all && yum makecache

验证

yum repolist

4.2.5 安装

sudo yum install redhat-lsb -y

安装完成,结束。