代码改变世界

linux:网络yum源和制作本地光盘yum源

2016-06-29 11:41  ZengGW  阅读(4706)  评论(0编辑  收藏  举报

linux:存放yum源的位置:/etc/yum.repos.d/,该目录下全是一些yum源

一、网络yum源:

  如图:下面全部都是yum源,后缀是".repo"都是合法的yum源,默认的是启动的CentOS-Base.repo这个yum源(网络yum源)

[root@study yum.repos.d]# ls -l
total 28
-rw-r--r--. 1 root root 1664 Dec  9  2015 CentOS-Base.repo --- 网络yum源
-rw-r--r--. 1 root root 1309 Dec  9  2015 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Dec  9  2015 CentOS-Debuginfo.repo  --- debug修复工具yum源
-rw-r--r--. 1 root root  290 Dec  9  2015 CentOS-fasttrack.repo
-rw-r--r--  1 root root  661 Jun 29 09:41 CentOS-Media.repo  --- 本地光盘yum源
-rw-r--r--. 1 root root 1331 Dec  9  2015 CentOS-Sources.repo
-rw-r--r--. 1 root root 1952 Dec  9  2015 CentOS-Vault.repo  ---虚拟yum源

  要使用CentOS-Base.repo这个yum源,linux必须要能连接外网,否则是用不了网络yum源的

  接下来看下CentOS-Base.repo这个网络yum源文件的内容:

# 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

  解释:

    [base] : 容器名称,必须放在[]中

    name : 描述,容器说明

    mirrorlist : 镜像网站,这个可以注释掉(网站在国外,有点慢)

    baseurl : 我们的yum源服务器地址,默认是centos官方的yum源服务器,可以使用

    enabled : 此容器是否生效,不写或者写成enabled=1都代表生效,写成enabled=0表示不生效

    gpgcheck : 如果是1是指RPM的数字证书生效,如果是0则不生效

    gpgkey :  数字证书的公钥文件保存位置。不用修改

  其实我们可以使用yum list查看一下yum可以安装的列表:

yum-plugin-tsflags.noarch                                           1.1.31-34.el7                                  base     
yum-plugin-upgrade-helper.noarch                                    1.1.31-34.el7                                  base     
yum-plugin-verify.noarch                                            1.1.31-34.el7                                  base     
yum-plugin-versionlock.noarch                                       1.1.31-34.el7                                  base     
yum-rhn-plugin.noarch                                               2.0.1-5.el7                                    base     
yum-updateonboot.noarch                                             1.1.31-34.el7                                  base     
zenity.x86_64                                                       3.8.0-5.el7                                    base     
zlib.i686                                                           1.2.7-15.el7                                   base     
zlib-devel.i686                                                     1.2.7-15.el7                                   base     
zlib-static.i686                                                    1.2.7-15.el7                                   base     
zlib-static.x86_64                                                  1.2.7-15.el7                                   base     
zsh.x86_64                                                          5.0.2-14.el7_2.2                               updates  
zsh-html.x86_64                                                     5.0.2-14.el7_2.2                               updates  
zziplib.i686                                                        0.13.62-5.el7                                  base     
zziplib.x86_64                                                      0.13.62-5.el7                                  base     
zziplib-devel.i686                                                  0.13.62-5.el7                                  base     
zziplib-devel.x86_64                                                0.13.62-5.el7                                  base     
zziplib-utils.x86_64                                                0.13.62-5.el7                                  base     
[root@study yum.repos.d]# 

  上面的列表分为三部分(从左到右说明):包名(跟包全名不同,注意区分)、版本号(发现次数,适用的系统之类的)、右边这个熟悉吧!就是yum源内的容器了(base、updates...)

  使用yum来进行安装软件,不需要我们自己解决安装软件包的依赖性,它会直接在yum源服务器把该软件的相关依赖包全部下载并进行安装,很方便

  但是当我们不能连接外网的时候,我们就使用不了网络yum源了,这时该怎么办呢?那就是要本地光盘yum源,也就是:CentOS-Media.repo

二、制作本地光盘yum源

  第一步:挂载光盘(/dev/cdrom这个可以使用/dev/sr0都可以一样的,/mnt/cdrom这个cdrom目录不存在就直接创建)

  挂载光盘之前,需要把光盘放入虚拟机中(linux中),就是你安装linux时的镜像就行

  mount /dev/cdrom /mnt/cdrom/

[root@study yum.repos.d]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
mount: /dev/sr0 is already mounted or /mnt/cdrom busy
       /dev/sr0 is already mounted on /mnt/cdrom

  因为我之前挂在过了,所以它提示/dev/sr0或者/mnt/cdrom很忙,也就是已经挂载了的意思

  第二步:修改/etc/yum.repos.d/目录下的yum源的名称,如下代码,使用mv命令修改名称,因为我们制作本地光盘yum源,所以CentOS-Media.repo不做修改

[root@study yum.repos.d]# ls -l
total 28
-rw-r--r--. 1 root root 1664 Dec  9  2015 CentOS-Base.repo.bak
-rw-r--r--. 1 root root 1309 Dec  9  2015 CentOS-CR.repo.bak
-rw-r--r--. 1 root root  649 Dec  9  2015 CentOS-Debuginfo.repo.bak
-rw-r--r--. 1 root root  290 Dec  9  2015 CentOS-fasttrack.repo.bak
-rw-r--r--  1 root root  661 Jun 29 09:41 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Dec  9  2015 CentOS-Sources.repo.bak
-rw-r--r--. 1 root root 1952 Dec  9  2015 CentOS-Vault.repo.bak

  然后就是修改CentOS-Media.repo文件了,先看下该文件的内容:

# CentOS-Media.repo
#
#  This repo can be used with mounted DVD media, verify the mount point for
#  CentOS-7.  You can use this repo and yum to install items directly off the
#  DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
#  yum --enablerepo=c7-media [command]
#  
# or for ONLY the media repo, do this:
#
#  yum --disablerepo=\* --enablerepo=c7-media [command]

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

其实跟上面的CentOS-Base.repo文件的配置项一样,只是配置的内容有点不同,最大的不同在于baseurl:

  网络yum源的baseurl后面跟着url地址,而CentOS-Base.repo本地光盘yum源的baseurl后面则是光盘挂载的地址

  此时我们要使本地光盘yum源生效,需要改baseurl和enabled的配置,容器名称随便写,name描述也随便写,只要你自己记得认识就行:

  baseurl=file:///mnt/cdrom/(你刚才光盘挂载的位置),其他的几个位置直接注释点就行,不注释也行,但是每次执行的时候会报错提示找不到

  enabled=1(这个很重要,在上面讲网络yum源的时候讲到过,这就是个开关,设置为1(或者直接这个配置项不写)表示yum源生效,写成0表示不生效)

  修改后的文件内容如下:

[c7-media]
name=CentOS-$releasever - Media
baseurl= file:///mnt/cdrom/
#        file:///media/CentOS/
#        file:///media/cdrom/
#        file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

  这个时候本地光盘yum源就制作好了,接下来可以使用yum list获取yum源安装的列表看一下我们制作的本地光盘yum源是否生效:

yum-plugin-show-leaves.noarch                                      1.1.31-34.el7                                   c7-media 
yum-plugin-tmprepo.noarch                                          1.1.31-34.el7                                   c7-media 
yum-plugin-tsflags.noarch                                          1.1.31-34.el7                                   c7-media 
yum-plugin-upgrade-helper.noarch                                   1.1.31-34.el7                                   c7-media 
yum-plugin-verify.noarch                                           1.1.31-34.el7                                   c7-media 
yum-plugin-versionlock.noarch                                      1.1.31-34.el7                                   c7-media 
yum-rhn-plugin.noarch                                              2.0.1-5.el7                                     c7-media 
yum-updateonboot.noarch                                            1.1.31-34.el7                                   c7-media 
zenity.x86_64                                                      3.8.0-5.el7                                     c7-media 
zlib.i686                                                          1.2.7-15.el7                                    c7-media 
zlib-devel.i686                                                    1.2.7-15.el7                                    c7-media 
zlib-static.i686                                                   1.2.7-15.el7                                    c7-media 
zlib-static.x86_64                                                 1.2.7-15.el7                                    c7-media 
zsh.x86_64                                                         5.0.2-14.el7                                    c7-media 
zsh-html.x86_64                                                    5.0.2-14.el7                                    c7-media 
zziplib.i686                                                       0.13.62-5.el7                                   c7-media 
zziplib.x86_64                                                     0.13.62-5.el7                                   c7-media 
zziplib-devel.i686                                                 0.13.62-5.el7                                   c7-media 
zziplib-devel.x86_64                                               0.13.62-5.el7                                   c7-media 
zziplib-utils.x86_64                                               0.13.62-5.el7                                   c7-media 
[root@study yum.repos.d]# 

  这个列表我在上面讲过,我们就看最右边的就行"c7-media",大家发现没,由原来的base、updates变成了 c7-media,这个容器名称大家属性吧!就是我们刚才制作的本地光盘yum源的容器名称,说明这些yum源安装的软件列表都是从我们制作的本地光盘yum源里面获取到的,说制作成功了!

  但是本地光盘yum源有2个问题:

    1.那就是不能获取最新的软件,比较是从我们的光盘中获取的的软件,不过没事,等我们可以连接外网了,使用yum工具来升级

    2.那就是每次当你开机时,想要使用都必须把光盘添加到虚拟机,然后手动挂载,或者开机前把光盘放进去,然后可以把挂载命令写到/etc/rc.d/rc.local中,开启自动挂载

三、yum常用的命令

  选项-y是自动回答yes

  1.升级:update

  格式:yum -y update 包名(注意这里说的是包名不是包全名)

  注意:千万不能只写yum -y update,没写包名就执行了,那这样就是升级整个linux系统的所以软件,包括内核都会升级,一旦全部升级了,那么你的服务器就不能被远程连接,很多问题就都出来了

  2.卸载:remove

  格式:yum -y remove 包名(注意这里说的是包名不是包全名)

  注意:千万不要随便的去卸载一个软件,因为它不只是卸载这个软件本身这么简单,大家都知道,linux的软件都有依赖性的,可能好几个软件都依赖同一个安装包,一旦你卸载其中一个软件,那么对应的依赖包也都跟着一起卸载,就会造成某些软件无法正常使用

  3.安装:install

  格式:yum -y install 包名(注意这里说的是包名不是包全名)

  4.查询:list、search

  格式:yum list

  格式:yum search 关键字

  5.yum软件组管理命令

  获取软件组命令:yum grouplist

  安装:yum groupinstall 软件组名

  卸载:yum groupremove 软件组名