[TOC]

0x00 Linux中软件安装的几种方式

Q:Linux中的如何进行安装、卸载、升级软件和管理?
答:回答这个问题前需要了解Linux的多个发行版本,不同版本之间安装软件方式和命令不一样,且同一个版本之间安装软件也有不同的方法;

但是大体来说Linux有两大派系:

  • 红帽派系,包含Redhat、Centos、Fedora等
    • 源码包安装:
    • rpm包安装:
    • yum源安装:
  • Debian派系,包含Kali、Ubuntu等。
    • Deb包安装:
    • apt-get源安装:

基本采用rpm/deb包管理、yum/apt-get在线管理、源码包编译安装管理和二进制安装包(解压就可用-类似于绿色安装)等等;

线下的安装方式:
也就是说你要把软件下载到本地去安装。一般我们下载的文件后缀名都是zip、tar.gz等压缩包,解压后会看到rpm、bin、deb、run之类扩展名文件,你可以根据自己的系统下载不同扩展名的软件。
1、rpm安装包:这时一款老牌的安装格式,是红帽创建的安装格式,现在已成为一种标准,常用在opensuse/turbo/redhat版本),安装方法rpm -ivh 软件名.rpm (如果只是安装一个i参数就够了,如果还要看安装进度和软件信息就加个vh)
2、deb安装包:DEB是Debian软件包格式的文件扩展名,常用在centos/ubuntu,在苹果系统里也常见此安装方式。安装方法:dpkg -i 软件名.deb
3、run安装包:以QT(一种编程工具)的安装文件为例,

  • 1)授权: chmod x qt-unified-linux-x64-2.0.2-2-online.run
  • 2)执行:./qt-unified-linux-x64-2.0.2-2-online.run即可安装。
    4、bin安装包:bin包是一个自解压格式的安装包,要想执行它,需要先赋予它可执行的权限。
    (以安装jdk为例)# chmod x jdk-6u21-linux-i586.bin# ./jdk-6u21-linux-i586.bin

对比源码包编译安装的优缺点
优点:

  • 开源对于业务需要更改源代码
  • 编译安装时可选择所需要的功能,进行最优化安装以便更加稳定和高效
  • 卸载方便

缺点:

  • 安装过程较多,安装较大的软件组合时候容易出错
  • 编译过程时间较长,安装比二进制安装时间长

0x01 源码包安装过程及make命令

安装注意事项:

  • 源代码标准保存位置 /usr/local/src/
  • 软件标准安装位置 /usr/local/

源码包编译安装需要下载安装编译工具:

1
2
3
4
5
6
7
8
9
10
11
$yum -y install gcc gcc-c++ make
# 下载源码包,解压缩下载的源码包,进入解压缩目录
./configure --prefix=<dir> # 指定安装路径
-定义需要的功能选项
-监测系统环境是否符合安装要求
-把定义好的功能选项和监测系统环境的信息都写入Makefile文件,用于后续的编辑

make #编译
make install #安装编译后二进制可执行文件
make clean # 译安装这步出错 则执行make clean 删除/usr/local源文件
make uninstall # 删除源码包编译安装

编译原理:

WeiyiGeek.编译原理

WeiyiGeek.编译原理

编译过程:

WeiyiGeek.编译过程

WeiyiGeek.编译过程



以Redhat下安装apache为例:

  • 先网站下载源代码包 http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.15.tar.gz
  • tar -xvf httpd-2.2.15.tar.gz -C /usr/src将其解压到 /usr/src/ 目录下
  • 到其解压目录 /usr/src/httpd-2.2.15/ 下, ./configure 运行configure配置文件,设置安装目录,安装模块等,不设置的话,软件默认安装在 /usr/local/apache2/目录下。
    如果 ./configure –prefix=/usr/local/https/ 则是将其安装在/usr/local/https/目录下。此时还并未安装只是配置安装路径
  • make 编译,生成可执行的二进制文件Makefile
  • make install 安装。此时,软件安装在 /usr/local/https/ 目录下
  • 最后在目录中启动httpd:/usr/local/apache2/bin/apachectl start

安装完成之后对安装包的清理:

  • 进入其解压目录 /usr/src/httpd-2.2.15/下make uninstall 者make clean 用于清除上一次的编译
  • 然后返回到上一级目录,把 httpd-2.2.15 删除
  • 如果要卸载软件的话,把 /usr/local/apache2 这个软件删除就可以

安装HTTPD服务使用rmp与源码包区别

  • 源码包卸载软件简单,rpm删除卸载软件较为麻烦(文件分散到各个目录)
  • 源码包安装的服务默认是不能被服务管理命令管理,只能由绝对路径进行服务的管理除非手动添加
  • 通过源码安装的目录在安装路径中存放网页的在htdocs/www中,而通过rpm安装的则在系统默认的/var/html/www中

0x02 yum介绍与命令

yum(全称为Yellowdog Updater Modified)是一个在CentOS、RedHat和Fedora操作系统中使用的Shell前端软件包管理器。
yum主要管理基于rpm的软件包,它可以自动升级、安装、删除rpm软件包,同时它还能够自动查找并解决rpm包之间的依赖关系,并且无需管理员逐个、手工的去安装每一个rpm包,使管理员在维护Linux主机时更加轻松自如。

yum可以从一个或多个repo文件中配置的repo仓库,通过http或ftp协议从repo仓库获得必要的信息,然后下载相关的软件包。

  • yum 安装不仅可以在连通网络中适用, 可以使用光盘进行yum安装
  • yum 在redhat 中,将其视为售后服务, 定位收费才可使用 (缺点),所以我们常常需要安装第三方源epel装上了它之后,就相当于添加了一个第三方源。

    • 优势:
    • 1.不替换本身的yum源,安装后会产生新的repo
    • 2.epel有很多源地址,如果一个下不到,会自动去另外一个下
    • 3.如果更新的包不全,就不会进行安装,依赖关系可以保全
  • repo仓库可以通过createrepo或yum-arch命令进行创建,也能够用别人已经创建好的repo仓库作为yum源

YUM 安装

  • 优点:简单,便捷,解决源码包安装依赖问题,全自动化安装
  • 缺点:没有办法定制,需要网络,网络环境差的情况话,下载速度慢

1.yum 命令
yumdownloader 命令

常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

命令说明:
list #表示列出所有的软件包
search [关键字] #搜索服务器上所有和关键字相关的包
clean all #表示清除yum源缓存,
makecache #表示生成yum源缓存metadata
yum -y install [包名] #安装指定的软件可使用通配符
yum -y remove [包名] #卸载
yum -y update [包名] #特别注意:没有指定包名则升级所有
yum -y upgrade #升级依赖

# 参数说明
yum --enablerepo=localyum --disablerepo=base,extras,updates,epel list #指定使用localyum库,并且是临时使用内网yum源,服务器重启后失效。
yum --downloadonly install tftp #仅仅下载不安装
yumdownloader pcre-devel openssl-devel #仅仅下载不安装

#yum软件组管理命令
yum grouplist #列出所有可用的软件组列表 显示中文则执行(LANG=en-vs)
yum group install 软件组名 #安装指定软件组 组名可以由grouplist查看
yum group remove 软件组名 #卸载指定软件组

yum whatprovides 动态链接库.so #查找动态链接库在哪一个rpm包里

补充示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#示例0.检查更新
yum check-update #该命令将更新存储库,并为您提供可以更新的所有软件包的列表

#示例1.查询so动态连接文件提供它的来源包
yum whatprovides libgcc_s.so.1


yum load-transaction /tmp/yum_save_tx.2016-09-09.22-26.wxYVRg.yumtx # 当yum中断更新后,重新执行该事务


#示例2.在指定repo库中安装指定的软件
yum --enablerepo=remi-php73 install -y php php-mysqli

#示例3.重新执行未完成的事务
yum load-transaction /tmp/yum_save_tx.2020-04-30.15-11.S54r3n.yumtx

#示例4.禁用repo的时候不禁用kubernetes的yum仓库
yum install docker-ce-19.03.3-3.el7 kubelet-1.17.4-0 kubeadm-1.17.4-0 kubectl-1.17.4-0 --disableexcludes=kubernetes


2.createrepo 命令

createrepo用以创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。
参考网站:http://linux.51yip.com/search/createrepo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
基本语法:createrepo [option] <directory>
-u --baseurl <url> #指定Base URL的地址
-o --outputdir <url> #指定元数据的输出位置
-x --excludes <packages> #指定在形成元数据时需要排除的包
-i --pkglist <filename> #指定一个文件,该文件内的包信息将被包含在即将生成的元数据中,格式为每个包信息独占一行,不含通配符、正则,以及范围表达式。
-n --includepkg #通过命令行指定要纳入本地库中的包信息,需要提供URL或本地路径。
-q --quiet #安静模式执行操作,不输出任何信息。

-g --groupfile <groupfile> #指定本地软件仓库的组划分,范例如下:
createrepo -g comps.xml /path/to/rpms #注意:组文件需要和rpm包放置于同一路径下。

-v --verbose #输出详细信息。
-c --cachedir <path> #指定一个目录,用作存放软件仓库中软件包的校验和信息。当createrepo在未发生明显改变的相同仓库文件上持续多次运行时,指定cachedir会明显提高其性能。
--update #如果元数据已经存在,且软件仓库中只有部分软件发生了改变或增减,则可用update参数直接对原有元数据进行升级,效率比重新分析rpm包依赖并生成新的元数据要高很多。
-p --pretty #以整洁的格式输出xml文件。
-d --database #该选项指定使用SQLite来存储生成的元数据,默认项。


$ mkdir -p /yum/centos/6/ #创建本地源目录
$ createrepo -pdo /yum/centos/6/ix86_64 /yum/centos/6/ix86_64 #初始化源目录,产生repodata
$ createrepo --update /yum_source/      //更新域名仓库


3.yum仓库配置

我们知道repo文件是CentOS、RedHat和Fedora操作系统中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件源。
其作用:我们将从哪里下载需要安装或者升级的软件包,repo文件中都进行了相关的配置,而这些配置将会被yum读取和应用。

repo文件内容详解
目录:/etc/yum.repo.d/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
vi /etc/yum.repos.d/CentOS-Base.repo

[base]
#该选项是定义软件源的名称,该名称是可以自定义,同时在该服务器上所有repo文件中是唯一的。注意:方括号里面不能有空格。
name=CentOS-$releasever–Base

#该选项是定义软件仓库的名称,$releasever变量定义了发行版本,通常是5,6,7等数字。
#这是指定镜像服务器的地址列表,通常是开启的它会选择最优或者第一个镜像服务器地址
#选择自己访问速度较快的镜像服务器地址复制并粘贴到repo文件中的baseurl选项中,我们就能获得较快的更新速度了。
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

#下面表示该行已经被注释,将不会被读取,这一行的意思是指定一个baseurl(源的镜像服务器地址)。
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
#baseurl通常有以下四种格式,注意:一个repo文件中可以定义多个软件源如下:
baseurl= http://mirrors.aliyun.com/centos/6.6/os/x86_64/ #使用http协议镜像服务器地址(使用最多)
baseurl= ftp://ftp.sjtu.edu.cn/centos/6.6/os/x86_64/ #使用ftp协议镜像服务器地址
baseurl= rsync://mirror.zol.co.zw/centos/ #使用rsync镜像服务器地址
baseurl= file:///ilanni/yum/ #使用本机的镜像服务器地址

#该选项表示在这个repo文件中启用这个软件源默认该选项可以不写。但是如果enabled的值为0,则表示禁用这个软件源。
enabled=1

#该选项表示对通过该软件源下载的rpm包进行gpg校验,如果gpgcheck的值为0表示不进行gpg校验。
gpgcheck=1

#该选项定义用于校验的gpg密钥文件。
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

WeiyiGeek.

WeiyiGeek.

文件:/etc/yum.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#们使用yum进行安装软件时,安装完毕后会自动把软件包删除如果需要保存把keepcache修改为1即可
cat /etc/yum.conf
[main]
#cachedir表示rpm包的缓存位置。
cachedir=/var/cache/yum/$basearch/$releasever #安装包存储目录
#是否保存下载的rpm包 1为保存
keepcache=0

debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release


4.yum仓库实战

(1)yum企业内部光盘源搭建
项目需求:该yum源需要配置两个源:一个是centos的光盘镜像源,一个是特殊rpm软件的镜像源并且该yum源是通过http进行访问。
实验环境:yum服务器192.168.1.247 centos,客户端192.168.1.248 centos

服务端操作流程与步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#0. 安装createrepo
Q:createrepo是什么?
A:createrepo是linux下创建仓库的软件包。create是创建的意思,repo是repository的缩写是仓库的意思。
yum -y install createrepo #只有安装createrepo这个软件,才能在yum服务器创建软件仓库。


#1. 安装web应用比如apache中httpd或者nginx都可以还可python -m SimpleHTTPServer模块
yum -y install httpd #你也可以通过源码包安装
/etc/init.d/httpd start #apache安装完毕后我们来启动apache
wget http://192.168.1.247

#2. 挂载光盘镜像到服务器中或者复制光盘镜像到yum服务器中
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
#修改CentOS-Media.repo 光盘源
# vim CentOS-Media.repo
# - [c6-media]
# - name=CentOS-$releasever - Media
# - baseurl=file:///mnt/cdrom #光盘挂载目录 注释掉下面没用的
# - file:///media/cdrom
# - file:///media/cdrecorder
# - gpgcheck=1
# - enabled=1
# - gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#---------------------------------

mkdir -p /var/www/html/yum
ll /var/www/html/yum/
mkdir /iso
mount -o loop CentOS-6.6-x86_64-minimal.iso /iso/ #创建光盘挂载
cp -rv /iso/* /var/www/html/yum/ #复制到光盘下的所有文件到/var/www/html/yum/目录下

#3. 现在我们访问下该目录,看看能不能正常显示
wget http://192.168.1.247/yum

#注意:在此我们没有创建yum数据库和信息索引文件,是因为光盘已经有yum数据库和信息索引文件,我们不需要再通过createrepo命令在进行。其实yum的数据库和信息索引文件,都在repodata文件夹下。如下:

#4. 为了光盘镜像实验的效果,我们在此以光盘镜像软件包中curl软件为例。如下:
ll /var/www/html/yum/Packages |grep curl

WeiyiGeek.repodata

WeiyiGeek.repodata

特殊软件镜像配置,在前面我们还要求一个特殊的yum源用来存放特殊软件的,在此我们以lrzsz这个软件为例。

1
2
3
4
5
6
7
8
9
10
11
#1. 该yum源存放的位置/var/www/html/ilanni/目录下,然后把lrzsz这个软件的rpm包放在/var/www/html/ilanni/目录下,如下:
mkdir -p /var/www/html/ilanni
cp /var/cache/yum/x86_64/6/base/packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm /var/www/html/ilanni/
ll /var/www/html/ilanni/

#2. 创建该特殊源的yum数据库和信息索引文件
createrepo ./
tree repodata/

#3. 现在我们访问下该目录,看看能不能正常显示,如下:
wget http://192.168.1.247/ilanni

WeiyiGeek.

WeiyiGeek.

客户端的配置
yum客户端的操作就简单了很多,我们只需要修改客户端的repo文件即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#1. 进入/etc/yum.repos.d/目录,备份原有的repo文件,如下:
rename .repo .repo.bak *.repo

#2.然后在该目录下,创建一个新的repo文件ilanni.repo,该文件名可以变但是后缀一定是.repo。
#基本软件
[centos6]
name=centos6
baseurl=http://192.168.1.247/yum/
enabled=1
gpgcheck=0

#特殊软件安装
[ilanni]
name=ilanni
baseurl=http://192.168.1.247/ilanni/
enabled=1
gpgcheck=0


#3. 测试安装软件安装curl软件,如下:
yum clean all
yum makecache
#yum -y update & yum -y upgrade #常常一起执行

yum -y install curl
yum -y install lrzsz #安装lrzsz软

注意:如果客户端yum安装软件包时,提示找不到该软件。强烈建议在客户端上执行
yum clean all
yum list

以上就是我们在内网搭建yum源的步骤。

补充:更新rpm包

1
2
3
4
5
6
7
8
9
10
11
#在我们搭建完毕内网yum源后,会经常遇到这两种情况。一是软件版本的更新,二是新增软件。
#无论遇到以上那种情况,我们都需要先删除原来的yum服务器的yum数据库和信息索引文件,然后通过createrepo命令重新创建yum数据库和信息索引文件。
cp /var/cache/yum/x86_64/6/base/packages/lftp-4.0.9-1.el6_5.1.x86_64.rpm /var/www/html/ilanni/
ll /var/www/html/ilanni/
rm -fr /var/www/html/ilanni/repodata/
createrepo /var/www/html/ilanni/ #必须重新建立yum数据和信息索引文件

#请看缓存数据执行安装
yum clean all
yum list |grep lftp
yum -y install lftp


(2)企业内部yum源搭建

yum仓库服务端配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#1. 创建yum仓库目录
mkdir -p /data/yum_data/
cd /data/yum_data/ #可以上传rpm包到此目录,此目录下面还可以包括文件夹

#2. 安装httpd与 createrepo 并且将httpd配置文件指向设置为/data/yum_data目录中
#h或者使用 python -m SimpleHTTPServer 80 &> /dev/null &
createrepo -pdo /data/yum_data/ /data/yum_data/ #初始化repodata索引文件

[[email protected] conf]$vi httpd.conf
DocumentRoot "/data/yum_data/" #用搜索 /DocumentRoot 的方法
<Directory "/data/yum_data/"> #317行
#把默认主页配置移到tmp目录下,少用rm命令。
[[email protected] httpd]$ mv conf.d/welcome.conf /tmp


#3.修改/usr/local/yumrepo目录的属主和属组为apache
[[email protected] conf]# chown -R apache.apache /data/yum_data/
[[email protected] conf]# ll -l /data/yum_data/
drwxr-xr-x. 3 apache apache 4096 11月 19 16:49 centos
drwxr-xr-x. 3 apache apache 4096 11月 19 16:50 epel
drwxr-xr-x. 2 apache apache 4096 11月 19 17:50 repodata


#4. 根据自己服务器ip地址进行配置
[[email protected] yum_data]$echo "192.168.30.130 yum.weiyigeek.com" >>/etc/hosts
[[email protected] yum_data]$tail -1 /etc/hosts #添加hosts解析
192.168.30.130 yum.weiyigeek.com


#5. 启动httpd服务(并且测试是否可以进行正常访问)
service httpd restart

#6. 保留yum安装软件时不删除安装包,只下载不安装软件并移动到httpd网页目录中
sed -i "s#keepcache=0#keepcache=1#g" /etc/yum.conf
# 安装包存储目录
cachedir=/var/cache/yum/$basearch/$releasever
ll /var/cache/yum/x86_64/6/base/packages

#下载需要的rpm包不安装
yum --downloadonly install tftp

#把下载的rpm包,移到yum服务器目录中
[[email protected] x86_64]#cd /var/cache/yum/x86_64/6/base/packages
[[email protected] packages]# mv * /data/yum_data/centos/6/os/x86_64


#7. 每加入一个rpm包就要更新一下(每次发布新的内容都需要更新)
createrepo -pdo /data/yum_data/ /data/yum_data/ #初始化
createrepo --update /data/yum_data/

客户端配置:
备注:注意更改为自己的域名地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#1. centos7 系统yum源配置方法 (centos6只是配置一哈路径而已)
[[email protected] yum.repos.d]$ vi localyum.repo
[localyum]
name=centos7
baseurl=http://yum.weiyigeek.com/centos/7/os/x86_64/
enable=1
gpgcheck=0

[localepel]
name=epel
baseurl=http://yum.weiyigeek.com/epel/7/x86_64/
enable=1
gpgcheck=0

[localextra]
name=extra
baseurl=http://yum.weiyigeek.com/centos/7/extras/x86_64/
enable=1
gpgcheck=0


#2. 指定使用localyum库,并且是临时使用内网yum源,服务器重启后失效。
#如果需要永久使用,需要修改配置repo文件源,设置enabled=0即可(打开设置为1)
yum --enablerepo=localyum --disablerepo=base,extras,updates,epel list


(3) 同步镜公网镜像yum源配置方法
在我们自己搭建的yum镜像站由于yum软件的数据库文件repodata不一致就会导致问题,因此我想到的解决方法就是直接使用公网yum源的repodata。
在公司里搭建一个内网yum服务器进行实时同步公网镜像流程步骤如下:

镜像同步公网yum源:

  • 上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。http://mirrors.ustc.edu.cn/status/
    CentOS官方标准源:rsync://mirrors.ustc.edu.cn/centos/
    epel源:rsync://mirrors.ustc.edu.cn/epel/
  • 正对于Centos6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 使用rsync同步yum源为了节省带宽、磁盘和下载时间,我只同步了CentOS6的rpm包,这样所有的rpm包只占用了21G,全部同步需要300G左右。
# 同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概3G,这些就不用重新下载。


#1. 创建四个目录,用于同步公网yum源
mkdir -p /data/yum_data/centos/6/os/x86_64/
mkdir -p /data/yum_data/centos/6/extras/x86_64/
mkdir -p /data/yum_data/centos/6/updates/x86_64/
mkdir -p /data/yum_data/epel/6/x86_64/


#2. 下面四条命令,同时复制执行,就会开始同步官网yum源到本地。
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/
/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/

#3. 查看同步完成后yum源的大小:
$du -sh yum_data
12G yum_data

$tree -L 3 yum_data/
yum_data/
WeiyiGeek.公网镜像repo

WeiyiGeek.公网镜像repo

补充常见的错误处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#问题1 Error1:
@ERROR: max connections (20) reached -- try again later
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
解决方法:
yum源服务器超过最大连接数,请过会再试。(多试几次,就成功啦)


#问题2:Error:
rsync: getaddrinfo: mirrors.ustc.edu.cn 873: Name or service not known
解决方法:
DNS无法解析,添加移动DNS
[[email protected] ~]#echo "nameserver 120.196.165.7" >> /etc/resolv.conf
[[email protected] ~]# cat /etc/resolv.conf
nameserver 120.196.165.7


0x03 附录脚本

(1) RHEL7系列快速配置本地yum源光盘
vim rhel7.repo.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom
#自动挂载
echo "/dev/cdrom /media/cdrom iso9660 defaults 0 0" >> /etc/fstab

cd /etc/yum.repos.d
cat > rhel7.repo <<END
[rhel7]
name=rhel7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
END

yum clean all
yum makecach

测试安装:

1
2
yum install httpd -y
#最后出现Complete!说明httpd安装成功,同时也说明了yum仓库配置成功!


(2) RHEL7系列快速配置本地yum源之文件
$vim fileyum.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#创建光盘镜像挂载目录以及创建软件包存放目录
mkdir /mnt/media /root/123
mount /dev/cdrom /mnt/media
cd /mnt/media && cd Packages
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
cd .. && cp -r * /root/123

cat > /etc/yum.repos.d/123.repo <<END
[REPO123]
name=123
baseurl=file:///root/123
enabled=1
gpgcheck=0
END

#镜像制作
createrepo /root/123
#至此如此本地yum源文件仓库就制作


0x04 入坑出坑

问题1.yum -y install 时出现This system is not registered with an entitlement server. You can use subscription-manager to register.问题;

1
2
3
已加载插件:fastestmirror, product-id, search-disabled-repos, subscription-manager

# This system is not registered with an entitlement server. You can use subscription-manager to register.

问题原因: 由于yum没有 -y 这个命令该命令是install的子命令所以会报错,还有一种情况是Redhat的操作系统默认yum是需要收费的我们需要切换到免费的CentOS yum上即可
解决办法:
1
2
3
4
5
6
7
8
9
# (0) 安装命令参数错误导致修正
yum install -y

# (1) 关闭子管理器
cat /etc/yum/pluginconf.d/subscription-manager.conf
[main]
enabled=0

# (3)