开始之前简单讲下源和包管理器的概念,个人理解如下:
源就是平时我们win电脑上的360软件管家、腾讯软件管家、微软商店这个意思,提供下载各类软件包、安装包的平台;
包管理器就是win电脑上各类软件的安装包,例如qq.exe、360.msi等,需要下载后用指定的命令可以进行安装、协助等操作,跟源配合使用。
一、官网源
每台Centos系统安装后,都自带一个官方厂家的源提供软件下载安装,称为官网源。
以Centos7为例子,官网源的路径在/etc/yum.repos.d文件夹下,里面有多个repo的源文件,记录各软件的下载网址
由于Centos是红帽公司旗下,所以它的包管理器是rpm,官方源也是红帽发布。官网:http://mirrorlist.centos.org/
官网源特征包含**mirrorlist.centos.org**网址
示例:Centos7.9-CentOS-Base.repo
[root@centos79-144 yum.repos.d]# cat CentOS-Base.repo # CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
二、国内源
1、使用mv命令,将原来源文件夹下的源重命名为CentOS-Base.repo.backup
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、使用curl命令,下载阿里的源文件到源文件存放目录,并取名为CentOS-Base.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3、其实到这里就可以使用了,当新下载软件就会读取CentOS-Base.repo的网址信息。
提问1:CentOS-Base.repo这个源文件可以改名嘛?可以改后缀嘛?
答:名字可以随便改,不影响下载源里面的信息;而后缀必须以.repo才可以。系统只会读取.repo的文件认作源,其他的一概不认
提问2:为什么之前备份的CentOS-Base.repo.backup系统不会读取?CentOS-Base.repo可以读取?
答:因为文件后缀不同,系统只会把.repo文件认作源,其他的一概不认
四、第三方源和EPEL源
除了官网和国内源,还有一些第三方源。第三方源一般是软件厂家针对不同linux系统自己发布的源,它不会随着开机自带,需要我们额外手动添加。
比如docker、kubernetes、ceph、MySQL等等,由于公司大、使用多、下载也大,人家就自己发布了源提供下载。
提问:官网源和国内源里面有docker呢?还需要下载docker的源嘛?
答:是的,有些软件在源里面自带了,但是仔细观察你会发现版本都比较低,是老版本。而厂家发布的docker源是最新的。
如果你需要安装新版docker就额外添加使用厂家提供的docker源。只需要老版本可以不添加。
提问:当添加了多个源,包含了一个软件的多个版本,我安装的是那个版本呢?
答:如果有个版本,yum install xxx命令默认会安装最新版本。
如果想安装指定版本 使用yum list xxxx –showduplicates | sort -r 查询当前有哪些版本,然后在跟进安装包名安装指定版本。
EPEL源比较特殊,它其实是一个红帽官网发布的针对企业特别补充的一个源。理论来说也算官网源。
但是它并不是开机自带,而是像第三方源一样,需要我们额外添加。
四、离线环境如何下载安装包
由于源是需要连接互联网的,国内的一些保密单位和企业工厂是没有外网互联网的,这种情况怎么处理呢?
博主推荐3种方法,搭配使用解决离线环境问题。
4-1、 在有网络的电脑直接下载安装包后拷贝离线环境使用
直接在电脑或手机上访问如下网址,下载后直接拷贝使用
推荐第三方镜像站:RPM Search (pbone.net)
推进第三方镜像站:Packages for Linux and Unix (pkgs.org)
4-2、找台有网络的linux系统上缓存安装包后拷贝使用
yum的命令自带了缓存功能,可以事先在有LINUX环境或者安装一个linux虚拟机进行缓存后拷贝
博主在离线交付时经常使用,这个缓存命令还可以缓存依赖
举例:Centos7缓存telnet
#使用方法,xxx为软件包名,--downloaddir为缓存的文件夹
yum install xxx --downloadonly --downloaddir=/home/xxx
#离线缓存telnet软件到home/telnet文件夹下
yum install telnet --downloadonly --downloaddir=/home/telnet
4-3、直接搭建ISO源作为离线环境使用
在安装系统的时候,系统镜像是一个ISO。这个ISO除了可以安装系统,也自带很多基本软件,可以作为离线源使用
使用方法参考博主之前的文章:
Centos-挂载离线ISO做为本地源 – 李宗盛 – 博客园 (cnblogs.com)
基本上这3个可以解决90%离线环境问题。如果遇到特别多的软件且不在iso里面,这个时候就要自己制作离线源了。