欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 12_03 _Linux软件管理之三 yum 有大用

rpm -> yum     yum是基于rpm的


HTML: HyperText Mark Language

XML: Extended Mark Language


XML,JSON:半结构化的数据


yum 仓库中的元数据文件

primary.xml.gz:

        当前仓库中的整个软件包的包列表,当前仓库里的所有rpm包的列表

        依赖关系 各包之间的依赖关系,各能力之间的依赖关系

        每个RPM安装能够生成的文件列表


filelists.xml.gz

        当前仓库中的所有RPM包的安装后生成的所有文件列表,它是个全局的文件

         (primary效率低,filelists是为了快速的)


other.xml.gz

        额外信息,比如RPM包的修改日志


repomd.xml 是包含了上面三个文件 ( primary.xml.gz filelists.xml.gz other.xml.gz )文件的时间戳和检验和

repomd  (repository  meta data ) (仓库元数据)



yum install zsh        (此时其中有一个功能是验证 三个xml.gz ( primary.xml.gz filelists.xml.gz other.xml.gz  )文件的时间戳和检验和即repomd.xml记录的是否相符合 (repomd.xml  是每次都要下载的) 如果不相符合,说明有被篡改,需重新下载primary.xml.gz 等三个文件吧? )



comps*.xml (即comps-rhel5-server-core.xml) RPM包分组信息  (它在创建yum之前必须存在) (它是红帽特有的)

每个组里有群组,群组也有名称  分组信息应该在创建yum仓库之前是存在的

每个组中的rpm包分成三个部分:必须安装的,可以安装的(建议安装的),可选的



yum

    install 不用指定路径,直接指定软件名



ftp://172.16.0.1/pub/{Server,VT,Cluster,ClusterStorage}

上面每一个都是独立的yum源


如何为yum定义repo文件

[Repo_ID]                   (不能跟此前的其它的名称同名,它是repo唯一的标识,其实是id)

name=Description  (怎么命名都行)

baseurl=        (repo地址的访问路径)  (三种格式 ftp:// http:// file:///  )   (本地路径前两个斜杠表示file协议,最后一个斜杠表示根路径)

enabled={1,0}  (是否启用)

gpgcheck={1,0} (是不是使用gpg这种机制来验证软件包的合法性和完整性) (默认是1)

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  (如果gpgcheck启用的话,要使用它)




yum [options] [command] [package...]

        子命令


    list:列表  (列表仓库中的所有软件包rpm包)

                (下面的都支持glob通配符)

        all  所有的(默认)

        available:所有可用的 (仓库里有,但是还未安装的,已经装过的,它就不显示了)

        installed:已经安装的

        updates: 可用的升级





        

    clean:清理缓存            

             packages 清理软件rpm包

             headers  清理头部信息

             metadata  清理元数据文件

             dbcache 库缓存(本地rpm包的库缓存)  

             all  清理所有 (实在记不住的话,就用它吧)


    repolist:            列出可用的yum仓库(显示repo列表及其简要信息)

          all

          enabled  (默认)

          disabled


     install: 安装

            -y:自动回答为yes

            --nogpgcheck:不做gpg检查安装

     yum install PACKAGE_NAME


    update:升级

    update-to:升级为指定版本


    upgrade:已经废弃 为了兼容以前版本的?

    upgrade-to:已经废弃 为了兼容以前版本的?


    remove|erase;卸载    (如果有依赖的话,依赖的包也会被卸载掉)

            -y:自动回答为yes


    info: 相当于 rpm -qi 查看软件包的信息


    provides | whatprovides : 相当于 rpm -qf 查看指定的文件或特性是由哪个包安装生成的


    makecache 生成缓存

     

   

    groupinfo

    grouplist [hidden] [groupwildcard]  groupwildcard就是通配符的意思

    groupinstall

    groupremove

    groupupdate


    search 采用模糊匹配的方式进行查找              #   yum search httpd*

    localinstall 本地安装

    localupdate 本地升级的

    reinstall  重新安装

    downgrade 降级的

    repolist  列出所有可用仓库

    help 帮助



/media/cdrom{Server,VT,Clust,ClusterStorage} 每一个都是独立的yum源 (yum仓库)


如何创建yum仓库

createrepo (它是一个rpm包) (rpm包提供的命令也是这个名字)     yum install createrepo (把这个createrepo  装了之后,才能使用 createreo命令建仓库吧)



http://172.16.0.1/yum/{Server,VT}   (是不是如果本机ip是 172.16.0.1 也可以通过这种方法来创建本地yum源)




image.png


image.png


image.png

服务器更改了元数据,缓冲元数据,就会有冲突

所以缓冲元数据会定期清理的

如果手动拥有了服务器的仓库的话,那么就要手动清空客户端的缓冲元数据


image.png



yum仓库就是rpm包的存放位置

yum仓库还包含元数据文件

生成元数据的命令 createrepo  

repo 就是库


把光盘挂载后当作仓库,是不是 createrepo  这个命令不需要了


如果把光盘挂载后当作仓库,此时挂载的是DVD光盘,而不是ISO光盘

image.png


# ls /media

# mkdir /media/cdrom

# mount -r /dev/cdrom /media/cdrom

image.png

# cd /media/cdrom

# ls 

image.png

# cd Server

# ls 

image.png

在红帽5中 四个仓库,每个仓库都有它自己仓库的源数据

红帽6中,把yum仓库的所有的rpm放到同一个目录里面,但是把 repodata 放在父目录下面,给 repodata定义了另外的链接路径,但是将来指定yum仓库的时候,一定要指向repodata的所在的目录 (即光盘的根目录?) (当然进了 Server目录,里面有repodata,把 Server 目录当作 仓库目录应该也可以 )

反正 根本原理 就是把 repodata的所在的目录 当作仓库目录

下面红帽5

image.png

下图是红帽6 由下图可以所有的rpm包都在 Package 目录

image.png

下图是红帽6 

image.png






image.png



image.pngrepodata 仓库数据

# cd repodata/

# ls 

image.png

# pwd

image.png

rhel5 与 rhel6 的yum库文件夹有所不同



挂载红帽6光盘 看看yum仓库

image.png


下面是红帽6的操作

# mkdir /media/cdrom

# mount /dev/cdrom /media/cdrom

# cd /media/cdrom

# ls 

image.png

# ls Server/              (有repodata 没有rpm包)

image.png


# ls Packages (所有包都在这个目录)

image.png

image.png

# ls 

image.png

# pwd

image.png

要把 repodata 目录当作所在仓库的真正所在的路径


# man yum 

image.png


# cd

# pwd

# ls /etc/yum.conf               ( 配置文件一般在什么什么.conf上,类似于windows的INF文件 )

image.png


[root@localhost ~]# cat /etc/yum.conf

cachedir 缓存目录

keepcache 是否保存缓存中的文件?

debuglevel 调试级别 yum安装的时候输出信息的级别

logfile 记录安程过程的级别

distroverpkg 发行版版本号的名称, (distro 发行) (ver version 版本) (pkg指的是版本号吧)

tolerant 容忍的,耐受磨损的 (假如有两个软件包,x,y   y已经装过了,一般会告诉你报错,y已经装过了 tolerant=1就不报错,就不装了,就忽略)

exactarch ( exact 精确的 )  exactarch  表示安装rpm包的时候,从yum仓库中获得的版本与当前系统必须要严格匹配

obsoletes 过期的要不要废弃

gpgcheck  安装rpm包的时候,检查完整性和来源合法性, 当然要检查的话,一定要提供检查文件 ,当然可以不检查

plugins      是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。

image.png

tolerant

exactarch

obsoletes

gpgcheck

plugins

对于以上只要基本了解就行


# cd /etc/yum.repos.d/

# ls 

image.png


image.png

image.png


# cat redhat.repo

# cat rhel-debuginfo.repo

image.png



#  man yum

image.png


# cd

# yum clean   ( yum clean all)

image.png


# yum list 

image.png

image.png


# yum list | less

image.png

image.png

installed 表示 已安装,如果未安装的话,就是仓库名(Repo_ID)


# cd /etc/yum.repos.d/

# ls 

image.png


# vim server.po

[Base]

name=RHEL5 Server

baseurl=ftp://172.16.0.1/pub/Server

enabled=1

gpgcheck=0                #本地的 ,就不要检查了吧

image.png

image.png


# yum list

image.png

此处截图省略

# yum list | less

image.png

image.png



此时可以看到installed(已安装的) 和 Base (仓库名)


可以定义多个 .repo结尾的文件,事实上一个repo文件里也可以定义多个repo信息



# vim server.repo

[Base]

name=RHEL5 Server

baseurl=ftp://172.16.0.1/pub/Server

enabled=1

gpgcheck=0


[VT]

name=REHL5 TV

baseurl=ftp://172.16.0.1/pub/VT

enabled=1

gpgcheck=0

image.png

image.png


# yum list | less

image.png

image.png

此时可以看到 仓库名 VT 了


如果看不到的话 

可以 

# yum clean

然后执行 

# yum list | less

image.png

此处图同上,省略掉吧



# yum repolist


image.png

status 指的是 包含有多少 yum仓库包



[root@localhost yum.repos.d]# man yum   (yum子命令有好多可选项)


image.png


# yum repolist  (默认 enabled 即 yum repolist enabled)

# yum repolist disabled 显示禁用的yum仓库

image.png



[root@localhost yum.repos.d]# man yum   

image.png


# yum list all             (显示所有的)

image.png


# yum list all zsh*  (所有的zsh开头的包)

image.png

image.png



# man yum

image.png



# yum list all php53*

image.png


# yum install php53-mysql

image.png

image.png

image.png



# yum install php*  (安装时可以使用通配符)

image.png

image.png


# man yum   (update升级到仓库中的最新版本 update-to 升级到仓库中的指定版本)

image.png


# yum remove php53-pdo   (卸载它,会同时卸载依赖于它的包  这里php53-mysql也会被卸载掉 )

image.png

image.png


# man yum 

image.png

info  这里 类似于 rpm -qi

# yum info zsh            查看这个软件包的信息

image.png



# yum provides /etc/inittab

image.png

image.png


# yum grouplist  (列出来仓库中的所有组)

image.png

image.png



# man yum 

image.png

 grouplist [hidden](显示隐藏的) [groupwildcard] (可以使用通配符)  ( wildcard 通配符)

 groupinfo 组名  显示某一个组的信息    中间有空格的话,要用双引号引起来


# yum groupinfo "Development Tools"


( mandatory 强制性的)

( default 默认的 )

( optional 可选的)


image.png

image.png



# yum groupinstall "Development Tools" "Development Libraries" -y    (开发组和开发库这两个组  应该是以后自己手动编译安装软件包的时候要用到这两个组)(手动安装的时候用用到开发环境 即这两个组)

                                                                                                                 (是不是安装过程中打开新窗口还使用 yum 安装,会报错? 一旦报错怎么办?听不清马哥讲的话)


image.png

image.png


# lftps

> cd Server

> ls

image.png

image.png

> get php53-mysql-5.5.5-5.el6.i386.rpm

> bye

 # ls 

image.png

image.png

image.png


# rpm -ivh php53-mysql-5.3.3-5.el5.i386.rpm (提出有依赖关系)

image.png


# yum localinstall php53-mysql-5.3.3-5.el5.i386.rpm   (localinstall 必须要指定文件,此时如果仓库里有依赖关系所需要的库,就自动安装了

尤其是集群环境的时候,很有用)

image.png

image.png


# yum localinstall php53-mysql-5.3.3-5.el5.i386.rpm   (localinstall 必须要指定文件,此时如果仓库里有依赖关系所需要的库,就自动安装了)

image.png

image.png



如果是从互联网下载下来的rpm包(使用 yum localinstall 安装),校验报错  就要使用 --nogpgcheck 选项( yum localinstall  --nogpgcheck)





# cd /etc/yum.repos.d/

# ls

# mv server.repo server.repo.backup

image.png

# ls 

# yum clean all

image.png

# ls 

# yum list all

image.png

image.png



# vim cdrom.repo

[Base]

name=RHEL5 CDROM Server

baseurl=file:///media/cdrom/Server

enabled=1

gpgcheck=0

image.png



# yum list all

image.png

image.png






# yum install createrepo   (可是 假如(rpm包在硬盘上,但是 没有 createrepo )   又没有怎么办,只有先用光盘装上去,才能 使用 createrepo  命令 )

image.png



# mkdir -pv /yum /VT

image.png


# cp /media/cdrom/VT/*.rpm /yum/VT

# cd /yum/VT

# ls 

image.png

# cd /etc/yum.repos.d/

# ls 

# vim cdrom.repo

image.png


# vim cdrom.repo

[Base]

name=RHEL5 CDROM Server

baseurl=file:///media/cdrom/Server

enabled=1

gpgcheck=0


[VT]

name=VT

baseurl=file:///yum/VT

enabled=1

gpgcheck=0

image.png


# yum repolist 

image.png



# yum list all

image.png

image.png



(库中有 VT 但是 没有 repomd.xml ,反正 没有  VT  的仓库 ,此时 通过 createrepo 来创建)

# createrepo /yum/TV

image.png


# ls /yum/VT       (此时可以看到 repodata 里面)

image.png



# yum clean all

#yum repolist

image.png


# cd /media/cdrom/VT/repodata

# ls  (comps-rhel5-vt.xml,但是在 /yum/VT是没有的 )

image.png



# cp comps-rhel5-vt.xml /root

# cd 

# createrepo -g /root/comps-rhel5-vt.xml /yum/VT

image.png







    groupinfo


普通分类: