1. 程式人生 > 實用技巧 >Centos Linux 離線下載軟體包(基礎環境篇)-從無到有

Centos Linux 離線下載軟體包(基礎環境篇)-從無到有

--時間:2020年10月23日

--作者:飛翔的小胖豬

一、概述

1.1 前言

很多生產環境往往是獨立的一張網路不與網際網路相通,經常會出現的問題就是應用在部署的時候無法安裝配套的依賴包。導致很簡單的一個可能部署互動動作時間線脫得老長老長的,影響工程互動及業務上線。容器技術很大程度上解決這一問題,只需要把業務應用封裝成映象然後在部署有容器服務的基礎環境上直接就可以業務run起來。在不能使用容器同時沒有對應軟體倉庫的環境中安裝部署應用時,往往需要我們自己提前把所需的軟體及檔案準備好。由於本人在工作中使用的系統大多是Centos系列的,文件使用Centos 7.6系統為基礎環境演示操作如何下載rpm包。

1.2 環境說明

文件採取的作業系統及軟體如下表:

1.3 操作及步驟說明

下載rpm包的方式一般有兩種方式,一種是明確的指導所需的rpm包名和版本,一種是無法獲取到準確的軟體名。對於能夠明確知道rpm包名的情況可使用“yum install --downloadonly rpm名”或“yumdownloader --destdir=/yum_down_soft/ rpm包名”依次下載包。無法準確知道包名的情況下可嘗試把整個倉庫的記憶體全部down下來使用reposync命令。

1.配置yum源

2.安裝相關的軟體

3.進行映象同步或下載單個軟體

4.生成repo清單檔案

5.打包帶走

二、具體方式

2.1 配置yum源

按照你的需求配置你想要同步的yum源,如使用zabbix為例,模擬下載同步zabbix的相關軟體包。

配置正確的yum原始檔,重新生成yum倉庫快取。
[root@docker_0001 ~]# vim /etc/yum.repos.d/zabbix.repo [zabbix]
name=zabbix
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/
enabled=1
gpgcheck=0

[supported]
name=supported
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/x86_64/

enabled=1
gpgcheck=0
[root@docker_0001
~]# yum clean all #清空之前的yum源快取
[root@docker_0001 ~]# yum makecache     #重新生成倉庫快取,該步操作在網路不穩定的情況下可能會失敗,不要慌多試幾次,會成功的。
[root@docker_0001 ~]# yum repolist #檢視倉庫包id及倉庫軟體數

2.2 安裝相關軟體

yum-utils安裝包提供了reposync命令用來同步映象,yumdownloader命令下載rpm包。

yum-utils安裝包提供了reposync命令用來同步映象,createrepo軟體實現生成本地yum倉庫的清單檔案。

[root@docker_0001 ~]# yum install yum-utils -y

createrepo軟體實現生成本地yum倉庫的清單檔案。

[root@docker_0001 ~]#  yum install createrepo -y 

2.3 同步映象

如果需要同步制定的yum倉庫資料則選取這一步的命令。單個rpm包下載請參考2.4章節的內容。

同步映象到本地中
安裝完成相關的軟體過後,使用命令同步遠端yum倉庫資料到本地中。
命令格式:
reposync -r 倉庫名(repo_name)

檢視倉庫名
[root@docker_0001 ~]# yum repolist

同步zabbix倉庫的包,執行命令過後會在本地當前目錄下建立一個與倉庫名同名的資料夾。同步zabbix倉庫至當前資料夾。
[root@docker_0001 ~]# reposync -r zabbix
注:
    如果reposync -r zabbix命令不能使用
    # mkdir docker_自建的資料夾
    # reposync --repoid repo_id_名 -p docker_自建的資料夾
該步驟執行過後同步完了倉庫包過後,還需參考2.5章節進行軟體關聯關係檔案生成。

2.4 下載rpm包

對於只下載幾個rpm的包的情況下可使用命令直接對rpm包進行下載。使用命令直接下載倉庫中rpm包有兩種方式。

使用yum-utils軟體包中的yumdownloader命令對軟體進行下載。
命令格式:
yumdownloader --destdir=目錄名/  軟體名
#下載vim軟體到/yum_down_soft/目錄下
[root@docker_0001 ~]# yumdownloader --destdir=/yum_down_soft/ vim      
直接使用yum命令下載軟體,不推薦這種方式。展示出來只是讓你知道有這個玩意。
[root@docker_0001 ~]# yum install --downloadonly yum-utils

找到軟體目錄使用該種方式下載的包存放在/var/cache/yum目錄下但是查詢起來是一個大問題。不一定能夠找到,所以這種方式直接滾蛋

下載完成軟體後如果你想通過yum install命令來安裝使用剛才新下載的rpm包,你還需要生成repo清單檔案。但是如果你直接使用rpm -ivh命令安裝的,恭喜你你可以跳過2.5章節,直接進入2.6章節打包打走。

2.5 生成repo清單檔案

遠端倉庫同步完成洪還不能馬上使用必須生成一個repodata清單目錄,使用者才能通過配置yum源的方式來使用倉庫中的軟體包。

我同步下來的zabbix倉庫位置就是/root/zabbix,請個人根據自己的實際路徑情況設定。
[root@docker_0001 ~]# createrepo /root/zabbix/

對於下載下來的rpm包如果想要通過yum命令安裝使用也是要生成repo清單檔案的,此處不累述

確認倉庫中是否包含repodata資料

[root@docker_0001 ~]#  ll /root/zabbix/ | grep -i repo

也可以使用該路徑配置為yum源,嘗試是否能夠進行正常包的安裝

2.6 打包帶走

對於同步過後的映象需要在其他地方使用直接打包壓縮帶走,然後在需要的地方解壓就好了。

使用tar命令,通過gzip的方式壓縮檔案。

打包zabbix/資料夾命名為zabbix.tar.gz
[root@docker_0001 ~]# tar -zcvf zabbix.tar.gz zabbix/

解壓倉庫包,解壓過後就可以像一般的倉庫一樣使用。

[root@docker_0001 ~]#  tar -zxvf zabbix.tar.gz 

ps:如果解壓過後你需要把倉庫內的rpm包新增到之前正在使用倉庫中,一定要在拷貝過後使用createrepo重新生成一次repodata