[Linux]CentOS7搭建/配置:YUM倉庫/源[本地源/Web源(Apache HTTP(D))/自建源倉庫]


若想搞懂整個配置過程和原理,就按照章節(1 / 2)一步一步地來。
若想直接一步到位,不想花過多時間,盡快配好,就直接看附件章節。

什么是yum源?
Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora、RedHat/RHEL、SUSE以及CentOS等Linux發行版的/repo/【Shell】前端【軟件包管理器】。

yum源 := yum倉庫 := yum管理下的軟件源/軟件倉庫

怎么生動地理解這一點呢?

yum 類同於 CENTOS操作系統的 軟件管理器;Web前端開發的 npm 包(依賴)管理軟件;Java后端開發的 maven 包(依賴)管理軟件。

值得注意的是,CENTOS 8新增了 DNF 包管理器,以取代之前OS版本的 YUM。

1 本地YUM源

1.1 [YUM倉庫/服務端] 獲取:軟件包資源

Eg: 操作系統的鏡像iso文件

1.2 [YUM倉庫/服務端] 掛載/搭建:yum倉庫(資源)

即 搭建yum倉庫
將操作系統鏡像(CentOS-....-.iso)掛載在本地目錄中;
此次【掛載】目錄為/var/www/html/repo/(此目錄本身不存在,需要創建);

為什么是/var/www/html目錄?
因為以便以后發布http(d)服務,http(d)服務中配置文件/etc/httpd/conf/httpd.conf的默認發布Web資源目錄正是"DocumentRoot "/var/www/html"
可參見此博文: CentOS7搭建httpd服務 - CSDN

mkdir /var/www/
mkdir /var/www/html
mkdir /var/www/html/repo

mkdir /iso
(上傳iso鏡像到目錄/iso/下)
mount /iso/CentOS7-1804.iso  /var/www/html/repo/

【查看/核驗】

df -h /iso/CentOS7-1804.iso # 查看指定文件(or目錄)所屬的磁盤/文件系統及其掛載路徑
      Filesystem             Size  Used Avail Use% Mounted on
      /dev/mapper/cl-root    15T    38G   15T   1% /

df –h # 查看已掛載設備的信息
	Filesystem           Size  Used Avail Use% Mounted on
	/dev/mapper/cl-root   15T   14G   15T   1% /
	devtmpfs              32G     0   32G   0% /dev
	tmpfs                 32G     0   32G   0% /dev/shm
	tmpfs                 32G  9.4M   32G   1% /run
	tmpfs                 32G     0   32G   0% /sys/fs/cgroup
	/dev/sda2           1016M  131M  886M  13% /boot
	/dev/sda1            200M  9.5M  191M   5% /boot/efi
	tmpfs                6.3G     0  6.3G   0% /run/user/0
	/dev/loop0           4.1G  4.1G     0 100% /var/www/html/repo

ll /var/www/html/repo # 查看掛載的目錄中是否有內容
	total 654
	-rw-r--r--. 1 root root     14 Dec  5  2016 CentOS_BuildTag
	drwxr-xr-x. 3 root root   2048 Dec  5  2016 EFI
	-rw-r--r--. 1 root root    215 Dec 10  2015 EULA
	-rw-r--r--. 1 root root  18009 Dec 10  2015 GPL
	drwxr-xr-x. 3 root root   2048 Dec  5  2016 images
	drwxr-xr-x. 2 root root   2048 Dec  5  2016 isolinux
	drwxr-xr-x. 2 root root   2048 Dec  5  2016 LiveOS
	drwxrwxr-x. 2 root root 630784 Dec  5  2016 Packages
	drwxrwxr-x. 2 root root   4096 Dec  5  2016 repodata
	-rw-r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
	-rw-r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
	-r--r--r--. 1 root root   2883 Dec  5  2016 TRANS.TBL

1.3 [客戶端/本地] 配置:yumRepoName.repo文件

即 配置yum源
在默認配置文件目錄中添加編輯配置文件;此次添加的配置文件為repo_local.repo

【本地主機 配置 本地的YUM源倉庫】
cd /etc/yum.repos.d/
touch repo_local.repo # 后綴必須為repo
vi repo_local.repo
	[repo_local] # yum倉庫名,必須與文件名【repo_local.repo】的前半部分一致
	name=repo for local # yum倉庫的描述信息
	baseurl=file:///var/www/html/repo/ # yum源的訪問地址(目錄內,一般含: /Packages、/repodata等子目錄)。file://+本地yum源目錄是本地yum源訪問地址的固定格式
	enabled=1 # 啟用倉庫
	gpgcheck=0 # 不進行紅帽標簽檢查

【本地主機 屏蔽 其他YUM倉庫(repo)】
ll /etc/yum.repos.d/
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Media.repo CentOS-Media.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak

1.4 檢驗:搭建yum成功與否

yum repolist       # 查看yum源中是否有軟件包/軟件包個數
repo_local倉庫中存在9911個軟件包 即 本地yum倉庫源搭建成功

2 網絡YUM源

即 通過發布http服務來搭建、共享yum倉庫
安裝httpd軟件,啟動httpd服務,並設置httpd為開機啟動,以http鏈接地址來訪問yum源/倉庫

2.1 [服務端] 搭建: 本地YUM倉庫

詳見本博文:

  • 1.1 [YUM倉庫/服務端] 獲取:軟件包資源
  • 1.2 [YUM倉庫/服務端] 掛載/搭建:yum倉庫(資源)
  • 1.3 [客戶端/本地] 配置:yumRepoName.repo文件<repo_local.repo>

2.2 [服務端] 安裝/重啟/設置開機啟動:httpd軟件 --> 發布HTTP服務

httpd服務的默認Web資源目錄 即 /var/www/html/
可參見此博文:

yum -y install httpd
systemctl restart httpd 
systemctl  enable httpd # 開機啟動

[防火牆:開啟HTTPD服務的80端口]
systemctl start firewalld
firewall-cmd --permanent --zone=public --add-port=80/tcp # 防火牆開啟80端口

補充: [可選項]
firewall-cmd --list-all # 查看防火牆信息
firewall-cmd --query-port=80/tcp  # 查看防火牆的指定端口是否開啟HTTPD服務的80端口
systemctl restart firewalld

【查看/核驗】查看httpd是否安裝成功,httpd服務是否啟動

ps -ef | grep httpd
或
ss -lntp | grep httpd
http://serverIP:9999/dirName

2.3 [客戶端] 配置:yumRepoName.repo文件

在默認配置文件目錄中添加編輯配置文件。此次添加的配置文件為repo_http.repo.

【本機 配置 指定遠程主機的YUM源倉庫】
cd /etc/yum.repos.d/
touch repo_http.repo # 后綴必須為repo
vi repo_http.repo
	[repo_http]                                  # yum倉庫名,必須與文件名【repo_local.repo】的前半部分一致
	name=repo for http                           # yum倉庫的描述信息
	baseurl=http://176.130.2.72/repo/            # yum源的網絡訪問地址(目錄內,一般含: /Packages、/repodata等子目錄)。
	enabled=1                                    # 啟用倉庫
        # 通過 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 選項,或者通過 PackageKit 的"添加/刪除軟件"工具,也能夠方便地啟用和禁用指定的軟件倉庫 # Eg: yum --enablerepo=epel -y install xrdp 
	gpgcheck=0                                   # 不進行紅帽標簽檢查

【本機 屏蔽 其他YUM倉庫(repo)】
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Media.repo CentOS-Media.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak

2.4 [客戶端/服務端] 檢驗:搭建yum成功與否

詳見本文: 1.4 檢驗:搭建yum成功與否

yum repolist

3 自建yum源倉庫

即 使用自行下載的rpm制作yum倉庫,以httpd或Nginx發布Web共享yum源服務

3.1 創建統一歸檔/存放RPM包的目錄

mkdir -p /app/yum/centos7/x86_64/

3.2 下載所需的RPM軟件包,並放在同一個目錄中

查找、下載RPM等軟件包的推薦網站

里面有2個下載好的軟件包

3.3 createrepo : 創建可用的yum源文件

createrepo命令:用於創建yum源(軟件倉庫),即為存放於本地的rpm包目錄建立索引,描述各包所需依賴的信息,生成元數據信息。可生成yum軟件包清單文件。

yum -y install createrepo
	createrepo --version
createrepo  -pdo /app/yum/centos7/x86_64/ /app/yum/centos7/x86_64/
createrepo --update -v /app/yum/centos7/x86_64/ # 若歸檔目錄添加或刪除了rpm包,可update更新索引,不必重新生成,節省時間
[補充: 備注/可選項]
[root@CENTOS7-20200707 ~]# createrepo -v /app/yum/centos7/x86_64
Spawning worker 0 with 1 pkgs
Worker 0: reading nano-2.3.1-10.el7.x86_64.rpm
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Starting other db creation: Mon Jul 27 16:58:18 2020
Ending other db creation: Mon Jul 27 16:58:18 2020
Starting filelists db creation: Mon Jul 27 16:58:18 2020
Ending filelists db creation: Mon Jul 27 16:58:18 2020
Starting primary db creation: Mon Jul 27 16:58:18 2020
Ending primary db creation: Mon Jul 27 16:58:18 2020
Sqlite DBs complete

[root@CENTOS7-20200707 ~]# ls /app/yum/centos7/x86_64/repodata
095096a77a0e87e74a7f0643be9dac988673d6b6d7663955620ff337cd6ab56d-filelists.xml.gz
0bd7f5f95ba7827f903a03bc8dfaf69ac6e286f30872af854de450746392fbe7-primary.xml.gz
8219a3fe4e77eab1c0dde4cbbd0a3893dae31fbe5b19aaf084deb36e7dc3016d-filelists.sqlite.bz2
9505d2b881f676b5c7ea72b1ac40e66ec48e3b79cf1dae55eff6e47155626e3b-other.sqlite.bz2
a2de74407d710f8f310a54d4ae166de3423c58f02f0827d63b8177e4b48afe00-other.xml.gz
b80638e29d421f080b67b51db0a9a65490bb2473ba95dba946c3cbb06a8e2552-primary.sqlite.bz2
repomd.xml

3.4 配置:Web共享服務(httpd)

【2 配置/發布 Apache HTTP(D)服務】
mkdir -p /var/www/html

vi /etc/selinux/config
	SELINUX=disabled (避免出現權限不足,訪問不了WEB資源的情況)

yum -y install httpd
systemctl restart httpd
systemctl enable httpd # 設置開機啟動
firewall-cmd --permanent --zone=public --add-port=80/tcp
	ss -lntp
		"httpd"
	關閉端口 firewall-cmd --permanent --zone=public --remove-port=80/tcp
ps -ef | grep httpd
systemctl restart firewalld

3.5 將該目錄復制到/var/www/html/中

cp -a /app/yum/centos7/x86_64/     /var/www/html/
或
ln -s /app/yum/centos7/x86_64/ /var/www/html/x86_64
	刪除軟鏈接: rm /var/www/html/x86_64

訪問: http://ip/x86_64

3.6 [客戶端] 配置:yumRepoName.repo文件

在默認配置文件目錄中添加編輯配置文件。此次添加的配置文件為repo_self.repo.

cd /etc/yum.repos.d/
touch repo_self.repo # 后綴必須為repo
vi repo_self.repo
	[repo_self]                          # yum倉庫名,必須與文件名【repo_local.repo】的前半部分一致
	name=repo for self
	baseurl=http://176.130.2.72/x86_64/   # yum源的訪問地址
	enabled=1                            # 啟用倉庫
	gpgcheck=0                           # 不進行紅帽標簽檢查

3.7 檢驗:搭建yum成功與否

詳見本文: 1.4 檢驗:搭建yum成功與否

yum repolist

4 附件/福利: 搭建基於HTTP服務發布的YUM源倉庫

源自一實際項目的實操全過程

4.1 [服務端] 制作本地YUM源倉庫

【1 制作本地YUM】

mkdir -p /var/www/html/repo
mkdir /iso

(FTP上傳鏡像到/iso/CentOS-7-x86_64-DVD-1611.iso )

mount /iso/CentOS-7-x86_64-DVD-1611.iso /var/www/html/repo

ll /var/www/html/repo/
    若iso鏡像掛載到文件系統目標目錄下成功,則:改文件系統目錄下會出現iso鏡像內的各類文件資源

若 mount 時出現: mount: /iso/CentOS-7-x86_64-DVD-1611.iso is not a block device (maybe try -o loop'?)解決方法:mount后加參數-o loop(使用 loop 模式用來將一個文件/檔案當成硬盤分割掛上系統;網上有人說,iso文件鏡像都是需要添加-o loop`)
mount -o loop /iso/CentOS-7-x86_64-DVD-1611.iso /var/www/html/repo

【2 配置/發布 HTTPD服務】

yum -y install httpd
systemctl restart httpd
systemctl enable httpd
firewall-cmd --permanent --zone=public --add-port=25/tcp
	ss -lntp
		"master"
	關閉端口
		firewall-cmd --permanent --zone=public --remove-port=25/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
	ss -lntp
		"httpd"
ps -ef | grep httpd
systemctl restart firewalld

【3 配置制作的本地YUM源倉庫】

cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Media.repo CentOS-Media.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
touch repo_local.repo
vi repo_local.repo
	[repo_local]
	name=repo for local
	baseurl=file:///var/www/html/repo/
	enabled=1
	gpgcheck=0

【4 查看/核驗 YUM源】

df -h 【查看ISO鏡像掛載情況】
	Filesystem           Size  Used Avail Use% Mounted on
	/dev/mapper/cl-root   15T   14G   15T   1% /
	devtmpfs              32G     0   32G   0% /dev
	tmpfs                 32G     0   32G   0% /dev/shm
	tmpfs                 32G  9.4M   32G   1% /run
	tmpfs                 32G     0   32G   0% /sys/fs/cgroup
	/dev/sda2           1016M  131M  886M  13% /boot
	/dev/sda1            200M  9.5M  191M   5% /boot/efi
	tmpfs                6.3G     0  6.3G   0% /run/user/0
	/dev/loop0           4.1G  4.1G     0 100% /var/www/html/repo
ll /var/www/html/repo 【查看掛載目錄文件】
	total 654
	-rw-r--r--. 1 root root     14 Dec  5  2016 CentOS_BuildTag
	drwxr-xr-x. 3 root root   2048 Dec  5  2016 EFI
	-rw-r--r--. 1 root root    215 Dec 10  2015 EULA
	-rw-r--r--. 1 root root  18009 Dec 10  2015 GPL
	drwxr-xr-x. 3 root root   2048 Dec  5  2016 images
	drwxr-xr-x. 2 root root   2048 Dec  5  2016 isolinux
	drwxr-xr-x. 2 root root   2048 Dec  5  2016 LiveOS
	drwxrwxr-x. 2 root root 630784 Dec  5  2016 Packages
	drwxrwxr-x. 2 root root   4096 Dec  5  2016 repodata
	-rw-r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
	-rw-r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
	-r--r--r--. 1 root root   2883 Dec  5  2016 TRANS.TBL
yum repolist 【檢驗yum源】
	...
	repo_local      repo for local
    ...

4.2 [客戶端] 其他主機 配置 遠程/網絡yum源

cd /etc/yum.repos.d/
touch repo_http.repo
vi repo_http.repo
	[repo_http]
	name=repo for http
	baseurl=http://xx.xx.xx.xx/repo/
	enabled=1
	gpgcheck=0

mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Media.repo CentOS-Media.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak

systemctl start firewalld
systemctl status firewalld
firewall-cmd --permanent --zone=public --add-port=80/tcp
systemctl restart firewalld
	iptables -L -n | grep 已添加的端口
firewall-cmd --state
firewall-cmd --list-all

[驗證是否yum生效]
yum repolist

X 參考文獻


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM