文章目录
前言一、yum源是什么?二、使用镜像搭建本地yum源1.搭建临时仓库第一步:挂载系统ios镜像到虚拟机第二步:在操作系统中挂载镜像第三步:修改yum源配置文件 2.搭建本地仓库第一步:搭建临时yum源来安装httpd并做文件分享第二步:在需要yum的机器上修改yum源配置文件 三、使用公网yum源仓库1.寻找需要的仓库url2. 修改配置文件
前言
本文章基于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 16dr-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/bindr-xr-xr-x. 5 root root 4096 May 26 05:34 bootdrwxr-xr-x. 20 root root 3220 Nov 12 08:51 devdrwxr-xr-x. 75 root root 8192 Nov 12 08:54 etcdrwxr-xr-x. 2 root root 6 Apr 11 2018 homelrwxrwxrwx. 1 root root 7 May 26 05:30 lib -> usr/liblrwxrwxrwx. 1 root root 9 May 26 05:30 lib64 -> usr/lib64drwxr-xr-x. 2 root root 6 Apr 11 2018 mediadrwxr-xr-x. 2 root root 6 Apr 11 2018 mntdrwxr-xr-x. 2 root root 6 Apr 11 2018 optdr-xr-xr-x. 113 root root 0 Nov 12 08:51 procdr-xr-x---. 2 root root 135 Nov 9 17:00 rootdrwxr-xr-x. 24 root root 720 Nov 12 08:54 runlrwxrwxrwx. 1 root root 8 May 26 05:30 sbin -> usr/sbindrwxr-xr-x. 2 root root 6 Apr 11 2018 srvdr-xr-xr-x. 13 root root 0 Nov 12 08:51 sysdrwxrwxrwt. 8 root root 127 Nov 12 08:51 tmpdrwxr-xr-x. 13 root root 155 May 26 05:30 usrdrwxr-xr-x. 19 root root 267 May 26 05:35 var
我们执行命令将iso镜像挂载到/mnt目录下
[root@localhost ~]# mount /dev/cdrom /mntmount: /dev/sr0 is write-protected, mounting read-only[root@localhost ~]# mount /dev/sr0 /mntmount: /dev/sr0 is write-protected, mounting read-only
注:这里两个命令使用其中一个就可以,/dev/cdrom和/dev/sr0在这里都表示这个镜像,这里有个细节,cdrom是sr0的软链接。
[root@localhost ~]# ll /devtotal 0crw-rw----. 1 root video 10, 175 Nov 12 08:51 agpgartcrw-------. 1 root root 10, 235 Nov 12 08:51 autofsdrwxr-xr-x. 2 root root 160 Nov 12 08:51 blockdrwxr-xr-x. 2 root root 80 Nov 12 08:51 bsgcrw-------. 1 root root 10, 234 Nov 12 08:51 btrfs-controldrwxr-xr-x. 3 root root 60 Nov 12 08:51 buslrwxrwxrwx. 1 root root 3 Nov 12 09:08 cdrom -> sr0drwxr-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]# lsCentOS-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]# lsrepobak
为什么会报错呢,因为repobak就是mv命令的目标目录,目标目录不会把自己放进自己里面,这是做不到的
然后我们新建一个本地的yum源配置文件,这个文件名可以随便起,但是,必须以 .repo 结尾
[root@localhost yum.repos.d]# touch local.repo[root@localhost yum.repos.d]# vi local.repo[localrepo]name=localbaseurl=file:///mnt/enable=1gpgcheck=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 allLoaded plugins: fastestmirrorCleaning repos: localrepoCleaning up list of fastest mirrors
然后查看yum源列表,新建yum源缓存
[root@localhost yum.repos.d]# yum repolistLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfilerepo id repo name statuslocalrepo local 4,070repolist: 4,070[root@localhost yum.repos.d]# yum makecacheLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfilelocalrepo | 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:00Metadata 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]# lscentos79[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 Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since Sun 2023-11-12 09:55:37 CST; 10s ago Docs: 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 messageNov 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 a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 inet 192.168.137.132/24 brd 192.168.137.255 scope global noprefixroute dynamic ens33 valid_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]# lsCentOS-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]# lsrepobak[root@localhost yum.repos.d]# touch centos79.repo[root@localhost yum.repos.d]# vi centos79.repo[centos79]name=centos79baseurl=http://192.168.137.132/centos79enable=1gpgcheck=0Loaded plugins: fastestmirrorCleaning repos: centos79Cleaning up list of fastest mirrors[root@localhost yum.repos.d]# yum repolistLoaded plugins: fastestmirrorDetermining fastest mirrorscentos79 | 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:00repo id repo name statuscentos79 centos79 4,070repolist: 4,070[root@localhost yum.repos.d]# yum makecacheLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfilecentos79 | 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:00Metadata 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.comPING 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 ms64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=128 time=32.6 ms64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=128 time=31.5 ms64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=4 ttl=128 time=31.3 ms64 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 4017msrtt 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 allLoaded plugins: fastestmirror, langpacksCleaning repos: base extras updatesCleaning up list of fastest mirrors[root@localhost ~]# yum makecacheLoaded plugins: fastestmirror, langpacksDetermining fastest mirrorsbase | 3.6 kB 00:00:00extras | 2.9 kB 00:00:00updates | 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:03Metadata Cache Created
配置公网的yum源,就是将原先centos官网的地址更改为国内镜像站的地址,校验啥的都不用变,所以不需要动原来的配置文件,因为很多时候公司或者企业服务器并不能连接到外网,所以这种配置方法很多时候都是个人搭配虚拟机来使用或者电脑为Linux系统的个人使用