文章目录
- 前言
- 一、yum源是什么?
- 二、使用镜像搭建本地yum源
- 1.搭建临时仓库
- 第一步:挂载系统ios镜像到虚拟机
- 第二步:在操作系统中挂载镜像
- 第三步:修改yum源配置文件
- 2.搭建本地仓库
- 第一步:搭建临时yum源来安装httpd并做文件分享
- 第二步:在需要yum的机器上修改yum源配置文件
- 三、使用公网yum源仓库
- 1.寻找需要的仓库url
- 2. 修改配置文件
前言
本文章基于centos7,适用于centos6,7,8,9等版本搭建yum源,文章分为网络源和本地源两部分内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、yum源是什么?
YUM是“Yellow dog Updater, Modified”的缩写,是一个软件包管理器,YUM从指定的地方(相关网站的rpm包地址或本地的rpm路径)自动下载RPM包并且安装,能够很好的解决依赖关系问题。
我们也将yum叫做包管理器,顾名思义,就是为了解决Linux操作系统的软件下载,安装,卸载,以及解决包与包之间的依赖关系。
注:什么是依赖关系?
Linux 依赖项只是程序需要运行的东西。这是因为 Linux 开发人员倾向于以模块化的方式编写程序。这可以追溯到从较小的组件构建程序的“Unix 哲学”。依赖项通常是共享库。它们可能用于访问数据库、使用网络协议或在屏幕上绘制图形元素。虽然专有程序也使用共享库,但在 Linux 世界中这样做更容易,因为它们通常也是开源的。依赖项也可以是完整的程序。Linux 世界中的一种常见模式是为现有命令行程序构建 GUI 前端。使用共享库使开发更容易,因为开发人员不必在每次要创建新应用程序时都想出新的方法来做事。
二、使用镜像搭建本地yum源
前提:需要准备对应的操作系统镜像。
1.搭建临时仓库
搭建临时仓库,意思就是临时使用,可能使用完之后就不需要了,等下次需要的时候再搭建,不需要长期保持yum源在机器上的使用场景。
这里我用centos7.9的镜像和虚拟机来做示范。
第一步:挂载系统ios镜像到虚拟机
操作系统的安装镜像中含有很多我们常见的rpm包,足可以应付大部分的使用场景。
完成之后,这个图标亮了表示已经连接iso到系统中。
第二步:在操作系统中挂载镜像
在Linux系统中,一般情况下/mnt目录中不会存放文件,这个大多数时候都是当作挂载点来使用
[root@localhost ~]# ls -al /
total 16
dr-xr-xr-x. 17 root root 224 May 26 05:34 .
dr-xr-xr-x. 17 root root 224 May 26 05:34 ..
lrwxrwxrwx. 1 root root 7 May 26 05:30 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 May 26 05:34 boot
drwxr-xr-x. 20 root root 3220 Nov 12 08:51 dev
drwxr-xr-x. 75 root root 8192 Nov 12 08:54 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 home
lrwxrwxrwx. 1 root root 7 May 26 05:30 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 May 26 05:30 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
drwxr-xr-x. 2 root root 6 Apr 11 2018 opt
dr-xr-xr-x. 113 root root 0 Nov 12 08:51 proc
dr-xr-x---. 2 root root 135 Nov 9 17:00 root
drwxr-xr-x. 24 root root 720 Nov 12 08:54 run
lrwxrwxrwx. 1 root root 8 May 26 05:30 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
dr-xr-xr-x. 13 root root 0 Nov 12 08:51 sys
drwxrwxrwt. 8 root root 127 Nov 12 08:51 tmp
drwxr-xr-x. 13 root root 155 May 26 05:30 usr
drwxr-xr-x. 19 root root 267 May 26 05:35 var
我们执行命令将iso镜像挂载到/mnt目录下
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only
注:这里两个命令使用其中一个就可以,/dev/cdrom和/dev/sr0在这里都表示这个镜像,这里有个细节,cdrom是sr0的软链接。
[root@localhost ~]# ll /dev
total 0
crw-rw----. 1 root video 10, 175 Nov 12 08:51 agpgart
crw-------. 1 root root 10, 235 Nov 12 08:51 autofs
drwxr-xr-x. 2 root root 160 Nov 12 08:51 block
drwxr-xr-x. 2 root root 80 Nov 12 08:51 bsg
crw-------. 1 root root 10, 234 Nov 12 08:51 btrfs-control
drwxr-xr-x. 3 root root 60 Nov 12 08:51 bus
lrwxrwxrwx. 1 root root 3 Nov 12 09:08 cdrom -> sr0
drwxr-xr-x. 2 root root 80 Nov 12 08:51 centos
第三步:修改yum源配置文件
在centos系统中,yum源的配置文件位于/etc/yum.repos.d目录下
[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo CentOS-x86_64-kernel.repo
在默认情况下,centos系统会在这个文件下存放公网的yum源配置,这些我们都用不到,建个目录都放进去就好了
[root@localhost yum.repos.d]# mkdir repobak
[root@localhost yum.repos.d]# mv ./* repobak/
mv: cannot move ‘./repobak’ to a subdirectory of itself, ‘repobak/repobak’
[root@localhost yum.repos.d]# ls
repobak
为什么会报错呢,因为repobak就是mv命令的目标目录,目标目录不会把自己放进自己里面,这是做不到的
然后我们新建一个本地的yum源配置文件,这个文件名可以随便起,但是,必须以 .repo 结尾
[root@localhost yum.repos.d]# touch local.repo
[root@localhost yum.repos.d]# vi local.repo
[localrepo]
name=local
baseurl=file:///mnt/
enable=1
gpgcheck=0
一共有五行内容,详解:
[localrepo] :标识yum源,在一个配置文件中可以配置多个yum源,用方括号来标识它们,方括号里面内容可以自定义
name=local :yum源名称,也可自定义
baseurl=file:///mnt/ :这个是yum源的地址,在本地挂载镜像的情况下,这个路径就是你镜像挂载点的位置
enable=1 :这个标识yum源的状态,1为启用,0为禁用
gpgcheck=0 :yum源校验,1为启用,0为禁用
(如果启用yum源校验,还需要输入一行gpgkey的内容,一般情况下不需要校验,如果有需要,自己添加一行)
第四步:同步yum源
先执行以下命令清空本地yum源缓存
[root@localhost yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: localrepo
Cleaning up list of fastest mirrors
然后查看yum源列表,新建yum源缓存
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
localrepo local 4,070
repolist: 4,070
[root@localhost yum.repos.d]# yum makecache
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
localrepo | 3.6 kB 00:00:00
(1/2): localrepo/filelists_db | 3.3 MB 00:00:00
(2/2): localrepo/other_db | 1.3 MB 00:00:00
Metadata Cache Created
到这里,临时的yum源也就搭建好了,这里我们使用的是mount命令来做挂载,这个不具有持久性,如果机器重启,那开机还需要重新挂载,但是配置文件是不会丢的
安装bash-completion和vim工具:
[root@localhost yum.repos.d]# yum install -y vim bash-completion
······
Complete!
[root@localhost yum.repos.d]#
安装完成!
2.搭建本地仓库
使用iso挂载镜像做yum源虽然可以满足我们的需求,但是一旦有很多台机器都需要搭建yum源,一台一台挂载镜像这种方式显然非常麻烦,这时候有一个yum仓库,所有机器都使用这个仓库就会很省事。一些公司或者企业都会有专门的yum源服务器,所以掌握搭建yum仓库是非常有必要的。
我在这里使用http来搭建,(当然,你也可以使用ftp)我在这用http来做,如果有兴趣,你可以使用ftp来做,我就不教你了
第一步:搭建临时yum源来安装httpd并做文件分享
这里直接从安装httpd开始,搭建临时的yum源看前面的部分
[root@localhost yum.repos.d]# yum install httpd
······
Complete!
默认安装就好,不需要花里胡哨
将iso镜像挂载到/var/www/html目录下,为了保持目录的简洁,新建一个目录(如果有多个镜像,这样可以使这个目录更加整洁,可读性也更高)
(一般情况下,镜像放在一个目录,然后将镜像挂载过来就行,如果你的机器空间足够大,你也可以直接把iso镜像复制过来,这个你自己决定就好了,我这里空间不太大,就挂载过来了,为了稳定,建议将iso镜像放到机器中)
[root@localhost yum.repos.d]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# mkdir centos79
[root@localhost html]# ls
centos79
[root@localhost html]# mount /dev/cdrom /var/www/html/centos79/
mount: /dev/sr0 is write-protected, mounting read-only
挂载成功之后,启动httpd服务,在本机的浏览器中输入ip和目录来访问,看看是否挂载成功
[root@localhost html]# systemctl start httpd
[root@localhost html]# systemctl status httpd
● httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)Active: active (running) since Sun 2023-11-12 09:55:37 CST; 10s agoDocs: man:httpd(8)man:apachectl(8)Main PID: 1569 (httpd)Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"CGroup: /system.slice/httpd.service├─1569 /usr/sbin/httpd -DFOREGROUND├─1570 /usr/sbin/httpd -DFOREGROUND├─1571 /usr/sbin/httpd -DFOREGROUND├─1572 /usr/sbin/httpd -DFOREGROUND├─1573 /usr/sbin/httpd -DFOREGROUND└─1574 /usr/sbin/httpd -DFOREGROUNDNov 12 09:55:37 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Nov 12 09:55:37 localhost.localdomain httpd[1569]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' di... this message
Nov 12 09:55:37 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.[root@localhost html]# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000inet 192.168.137.132/24 brd 192.168.137.255 scope global noprefixroute dynamic ens33valid_lft 1682sec preferred_lft 1682sec
我这台机器的ip是192.168.137.132,所以,地址为http://192.168.137.132/centos79
如果不能访问,查看防火墙(firewalld)和selinux服务状态,关闭firewalld和selinux
如果是在没有浏览器的情况下,使用curl访问你的http服务的地址也是可以的,如果没有回显,那可能服务状态有异常
[root@localhost ~]# curl http://192.168.137.132/cenos79
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /cenos79 was not found on this server.</p>
</body></html>
第二步:在需要yum的机器上修改yum源配置文件
[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo CentOS-x86_64-kernel.repo
[root@localhost yum.repos.d]# mkdir repobak
[root@localhost yum.repos.d]# mv ./* repobak/
mv: cannot move ‘./repobak’ to a subdirectory of itself, ‘repobak/repobak’
[root@localhost yum.repos.d]# ls
repobak
[root@localhost yum.repos.d]# touch centos79.repo
[root@localhost yum.repos.d]# vi centos79.repo
[centos79]
name=centos79
baseurl=http://192.168.137.132/centos79
enable=1
gpgcheck=0Loaded plugins: fastestmirror
Cleaning repos: centos79
Cleaning up list of fastest mirrors
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
centos79 | 3.6 kB 00:00:00
(1/2): centos79/group_gz | 153 kB 00:00:00
(2/2): centos79/primary_db | 3.3 MB 00:00:00
repo id repo name status
centos79 centos79 4,070
repolist: 4,070
[root@localhost yum.repos.d]# yum makecache
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
centos79 | 3.6 kB 00:00:00
(1/2): centos79/other_db | 1.3 MB 00:00:00
(2/2): centos79/filelists_db | 3.3 MB 00:00:00
Metadata Cache Created
到这里你的yum源仓库就搭建好了。
三、使用公网yum源仓库
前提:Linux操作系统可以访问到公网。
1.寻找需要的仓库url
在公网中,我们一般会使用国内镜像站的源,在最开始,这些源都是在国外的,下载速度很慢,而且,访问外网也是咱们国家不允许的。
经常使用的镜像站有很多,我在这列举我最常用的三个:排名不分先后,都很好用,看你个人喜好!!!
清华源:https://mirrors.tuna.tsinghua.edu.cn/help/centos/
中科大源:https://mirrors.ustc.edu.cn/help/centos.html
阿里源:https://developer.aliyun.com/mirror
这些镜像站都有很多系统,具体的使用,到镜像站就会有使用教程,比如:
清华源:
中科大源:
阿里源:
2. 修改配置文件
我们这里以清华源为例,来给大家演示:
确认机器可以连接到公网,按提示操作,对于centos7系统,复制命令到操作系统直接执行就好
不要动原来的配置文件!!!
不要动原来的配置文件!!!
不要动原来的配置文件!!!
使用ping 命令来检测网络连通性:
[root@localhost ~]# ping baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=128 time=29.6 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=128 time=32.6 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=128 time=31.5 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=4 ttl=128 time=31.3 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=5 ttl=128 time=32.2 ms
^C
--- baidu.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4017ms
rtt min/avg/max/mdev = 29.694/31.496/32.682/1.046 ms
[root@localhost ~]#
如上则为连通外网
[root@localhost ~]# sed -e 's|^mirrorlist=|#mirrorlist=|g' \
> -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
> -i.bak \
> /etc/yum.repos.d/CentOS-*.repo
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# yum clean all
Loaded plugins: fastestmirror, langpacks
Cleaning repos: base extras updates
Cleaning up list of fastest mirrors
[root@localhost ~]# yum makecache
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/10): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/10): base/7/x86_64/primary_db | 6.1 MB 00:00:01
(3/10): base/7/x86_64/filelists_db | 7.2 MB 00:00:02
(4/10): base/7/x86_64/other_db | 2.6 MB 00:00:00
(5/10): extras/7/x86_64/primary_db | 250 kB 00:00:00
(6/10): extras/7/x86_64/other_db | 150 kB 00:00:00
(7/10): extras/7/x86_64/filelists_db | 303 kB 00:00:00
(8/10): updates/7/x86_64/primary_db | 24 MB 00:00:03
(9/10): updates/7/x86_64/other_db | 1.4 MB 00:00:00
(10/10): updates/7/x86_64/filelists_db | 13 MB 00:00:03
Metadata Cache Created
配置公网的yum源,就是将原先centos官网的地址更改为国内镜像站的地址,校验啥的都不用变,所以不需要动原来的配置文件,因为很多时候公司或者企业服务器并不能连接到外网,所以这种配置方法很多时候都是个人搭配虚拟机来使用或者电脑为Linux系统的个人使用