Linux技能篇-yum源搭建(本地源和公网源)


前言

本文章基于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 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 -DFOREGROUND

Nov 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 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: 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]# 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=0

Loaded 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系统的个人使用

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Linux 系统中,yum 是一款非常重要的包管理工具,它可以帮助我们快速方便地安装、升级和删除软件包。为了提高软件包安装的效率,我们可以搭建本地的 yum ,这样就可以避免重复下载和从远程服务器上拉取软件包,大大缩短软件包安装的时间。 以下是在 CentOS 7 系统上搭建本地 yum 的步骤: 1. 安装 httpd 和 createrepo 软件包: ``` sudo yum install httpd createrepo -y ``` 2. 创建一个本地 yum 目录: ``` sudo mkdir -p /var/www/html/yum ``` 3. 将需要的软件包复制到本地 yum 目录中: ``` sudo cp /path/to/packages/* /var/www/html/yum/ ``` 4. 进入本地 yum 目录并创建 repodata 目录: ``` cd /var/www/html/yum sudo createrepo . ``` 5. 修改 Apache 配置文件,开启目录索引: ``` sudo vi /etc/httpd/conf/httpd.conf ``` 找到以下这一行: ``` Options Indexes FollowSymLinks ``` 将其改为: ``` Options Indexes FollowSymLinks +Indexes ``` 保存并退出。 6. 启动 Apache 服务: ``` sudo systemctl start httpd ``` 7. 配置本地 yum : ``` sudo vi /etc/yum.repos.d/local.repo ``` 添加以下内容: ``` [local] name=Local Yum Repository baseurl=http://localhost/yum/ gpgcheck=0 enabled=1 ``` 保存并退出。 8. 清除 yum 缓存: ``` sudo yum clean all ``` 9. 测试本地 yum 是否可用: ``` sudo yum list ``` 如果列出了本地 yum 中的软件包列表,说明本地 yum 已经搭建成功。 以上就是在 Linux 系统中搭建本地 yum 的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秣宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值