Rpm使用和YUM库的创建
题记:RPM:RedHat Package Manager   (RedHat  软件包管理工具),后缀名为:RPM 。RPM是一种软件包的安装管理工具,它包含某些在Linux 分发版中,虽然这一文件格式打上了RedHat 标志,但是其是开放的,Linux的分发版本如:OpenLinux、SUSE、Turbo Linux等都是用了该包管理器。
     YUM是“Yellow dog Updater, Modified”的缩写,可执行程序名为yum。YUM是一个在Fedora中的Shell前端软件包管理器。在红帽企业版Linux 5中引入YUM的重要原因之一,便是YUM能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装,便于管理大量系统的更新问题。
      补充:DPKG是Debian软件包管理的基础,与RPM十分类似。这个机制最早是由Debian Linux社群所开发出来的,透过dpkg的机制,Debian提供的软件就能够简单的安装起来,同时还能提供安装后的软件资讯,实在非常不错。只要是衍生于Debian的其他Linux distributions大多使用dpkg这个机制来管理软件包,包括B2D,Ubuntu等等。
摘要:rpm安装,卸载,查询,校验,升级,yum本地源创建,ftp源创建
一、rpm
   ①安装(Install)
    -i/--install  安装
    -v 显示安装过程
    -h 显示安装进度
    --nodeps 忽略依赖关系,强制安装
    --test 测试,不安装
   ②卸载(remove)
    -e  卸载
    --nodeps
    --test
   ③升级(upgrade)
     -U(upgrade)当只有新的rpm软件版本时,才可以升级
     -F(freshen)即便没有安装,也可以重新安装
   补充:内核rpm包,只能安装,不能升级
   ④校验(verify)
     -V/--verify 校验
   ⑤查询(query,常用,非常有用)
     -q   查询有没有安装
     -qi  查询软件包信息
     -ql  查询软件包安装之后安装的文件
     -qf  查询安装的文件有那个rpm包安装
     -qpl 查询未安装的软件包安装之后会产生的安装文件
     -qC 查询安装的软件包产生的配置文件
     -qd 查询安装的软件包的文档信息
     -qR 查询安装的软件包的依赖文件
     --scripts 查询安装软件包的安装脚本文件
   补充:--initdb 初始化rpm的数据库
         --rebuild 重建rpm的数据库
         --checksig 查询签名信息
         --import 公钥文件(/etc/pki/rpm-gpg/*)导入公钥
         --replacefiles 对于已经安装过的软件包,可以直接覆盖原来安装过的文件
         --replacepkgs  重复安装
         --force
二、yum
  #1 YUM的特点有:
    可以同时配置多个资源库(Repository)
    简洁的配置文件(/etc/yum.conf)
    自动解决增加或删除rpm包时遇到的倚赖性问题
    使用方便
    保持与RPM数据库的一致性
  #2 为什么要进行YUM库的配置
    我们在安装好Linux后要进行YUM源的设置,是为了方便日后对软件包的管理,解决单独安装RPM软件包时可能产生的软件包
依赖关系(使用yum人仓库中安装软件包,如果还有依赖的软件包,yum工具会一并安装。在企业中,我们会设置企业自己的
YUM源(库)方便企业Linux系统(主要是红帽和红帽的Fedora)对软件包的管理,更重要的原因是保证YUM源的安全性,因
为一个软件包从源头就被开了口子那我们安装了这样的软件就等于给自己身上开刀!所以,我们要对YUM库进行必要的配置工作。
  #3 YUM知识简单介绍
yum 命令接受命令行语法为:
(以下为man中的信息)
    yum [options] [command] [package ...]
       command is one of:
        * install package1 [package2] [...]
        * update [package1] [package2] [...]
        * check-update
        * upgrade [package1] [package2] [...]
        * remove | erase package1 [package2] [...]
        * list [...]
        * info [...]
        * provides | whatprovides feature1 [feature2] [...]
        * clean [ packages | headers | metadata | dbcache | all ]
        * makecache
        * groupinstall group1 [group2] [...]
        * groupupdate group1 [group2] [...]
        * grouplist [hidden] [groupwildcard] [...]
        * groupremove group1 [group2] [...]
        * groupinfo group1 [...]
        * search string1 [string2] [...]
        * shell [filename]
        * resolvedep dep1 [dep2] [...]
        * localinstall rpmfile1 [rpmfile2] [...]
        * localupdate rpmfile1 [rpmfile2] [...]
        * reinstall package1 [package2] [...]
        * downgrade package1 [package2] [...]
        * deplist package1 [package2] [...]
        * repolist [all|enabled|disabled]
        * help [command]
(以下是几个常用命令的介绍(以RHEL5(红帽企业版5)为蓝本)
1.列出软件包
    使用yum list命令可以列出系统已安装的软件包和仓库中可用的软件包,以列表格式给出。其命令格式为:
    yum list [...]
    可以包含的子命令如下:
    1.1 yum list [all|glob_exp1][glob_exp2][...]
        列出所有已安装和仓库中可用的软件包
    1.2 yum list [glob_exp1][...]
        列出仓库中所有可用的软件包
    1.3 yum list updates [glog_exp1][...]
        列出仓库中比系统已安装软件包新的软件包
    1.4 yum list installed [glob_exp1][...]
        列出已安装的软件包
    1.5 yum list recent
        列出新加入仓库的软件包
    其中子命令后面可以跟一个正则表达式参数,用于选定列出的软件包。
    RHEL5中,对相似或提供相关功能的软件包还有公共的分组。可以使用yum grouplist命令可以列出软件包仓库中的分组。
2.安装软件包
    和rpm -i命令类似,使用yum install命令可以安装一个或多个软件包,将软件报名作为参数附加在yum install命令之后即可。
yum自动解决软件包之间的依赖关系。其命令语法为:
    yum install package1 [package2] [...]
    还可以使用yum groupinstall命令成组安装软件包。组名可以用yum grouplist查询。其命令行语法为:
    yum groupinstall group1 [group2] [...]
    [注]如果软件组名包含空格,需要用引号将组名括起来以防yum将其理解为多个参数。
3.删除软件包
    和rpm -e命令类似,使用yum remover或yum erase命令可以删除一个或多个软件包。其命令语法为:
    yum remove package1 [package2] [...]
    或
    yum erase package1 [package2] [...]
    [注意]如果删除的软件包还有被其他软件包所依赖,那些软件包也会被一并删除。
    同样,还可以使用yum groupremove命令按组删除软件包。其命令行语法为:
    yum groupremove group1 [group2] [...]
4.检查新版本
    使用yum check-update命令还可以检查YUM仓库中是否有比本地已安装的软件包的更新版本。
5.升级软件包
    和rpm -U或rpm -F命令类似,使用yum update命令可以安装一个软件包的更新版本。其命令行语法为:
    yum update [package1] [package2] [...]
    如果需要将系统所有已安装的软件包更新到最新版本,可以使用不加参数调用yum update命令。
    同样,还可以使用yum groupupdate命令成组升级软件包。其命令说语法为:
    yum groupupdate group1 [group2] [...]
 
三、
=======================YUM库的配置=========================
    1.配置文件在/etc/yum.repos.d下
    2.默认模板为rhel-debuginfo.repo,内容如下:
[rhel-debuginfo]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/$basearch/Debuginfo/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
    3.YUM本地源
①使用root用户登录系统,并使用下面的命令创建目录:
# mkdir  -v  /media/cdrom
# mkdir  -v  /var/yum
②挂载系统光盘,并复制里面的全部内容至/var/yum目录,这可以使用以下命令实现:
# mount  /dev/cdrom  /media/cdrom
# rsync  -r  /media/cdrom/*  /var/yum
面后卸载光盘
# umount  /dev/cdrom
③检查当前是否已经安装createrepo包的安装情况:
# rpm  -q  createrepo
如果显示为尚未安装,则需要执行如下的命令完成安装:
# cd  /var/yum/Server/
# rpm  -ivh  /media/cdrom/Server/createrepo-0.4.4-2.fc6.noarch.rpm
注:上面安装的这个包createrepo的版本号可能会有所不同,你只要保证包的名字相同即可。
其实,红帽的系统盘里已经创建好了rpm包的依赖关系,完全复制就可以用啦,但是我们这里考虑到以后会添加新的软件包,
需要解决关系,所以重建一下rpm包的依赖关系。
④创建yum repository的xml-rpm-metadata,执行如下命令:
# createrepo  -g  /var/yum/Server/repodata/comps-rhel5-server-core.xml  /var/yum/Server/
# createrepo  -g  /var/yum/VT/repodata/comps-rhel5-vt.xml  /var/yum/VT/
# createrepo  -g  /var/yum/Cluster/repodata/comps-rhel5-cluster.xml  /var/yum/Cluster/
# createrepo -g  /var/yum/ClusterStorage/repodata/comps-rhel5-cluster-st.xml  /var/yum/ClusterStorage/
⑤创建本地yum客户端的repo文件,以使用本地yum repository:
# cd  /etc/yum.repos.d/
# vim local.repo
接下来在文件中添加如下内容后保存:
[base]
name=Server
baseurl=file:///var/yum/Server
gpgcheck=0
enabled=1

 
[VT]
name=VT
baseurl=file:///var/yum/VT
gpgcheck=0
enabled=1

 
[Cluster]
name= Cluster
baseurl=file:///var/yum/Cluster
gpgcheck=0
enabled=1

 
[CS]
name= ClusterStorage
baseurl=file:///var/yum/ClusterStorage
gpgcheck=0
enabled=1
⑥删除一下以前的信息
#yum clean all
#yum list all 测试一下,是不是已经可以看到安装包啦
测试使用yum来安装软件包
# yum  install  httpd
如果能正常安装,那么恭喜你,本地yum repository创建成功!!

 
   4.ftp源,或者http源,都比较类似
   
①关闭防火墙:
# service  iptables  stop
# chkconfig  iptables  off
②启动ftp服务:(已安装vsftp)
# service   vsftpd  start
# chkconfig  vsftpd  on
③复制系统盘里面的全部内容至/var/ftp/pub目录,这可以使用以下命令实现:
# rsync  -r  /media/cdrom  /var/ftp/pub
说明:请确保你的光盘已经挂载至/media/cdrom目录; 
④创建yum repository的xml-rpm-metadata,执行如下命令:
# createrepo  -g  /var/ftp/pub/Server/repodata/comps-rhel5-server-core.xml  /var/ftp/pub/Server/
# createrepo  -g  /var/ftp/pub/VT/repodata/comps-rhel5-vt.xml  /var/ftp/pub/VT/
# createrepo  -g  /var/ftp/pub/Cluster/repodata/comps-rhel5-cluster.xml  /var/ftp/pub/Cluster/
# createrepo -g  /var/ftp/pub/VT/repodata/comps-rhel5-cluster-st.xml  /var/ftp/pub/ClusterStorage/
⑤测试一下你的FTP服务是否能够正常使用。这可以通过使用如下命令实现:
# ftp  localhost 
在提示用户名时输入:ftp
在提示输入密码时输入(也可以直接回车): ftp

 
⑥修改/etc/yum.repos.d/media.repo文件,重新定义yum客户端关于yum源的指向,如下(其中的your_IP要使用你需要的IP地址替换):

 
[base]
name=Server
baseurl=ftp://your_IP/pub/Server
gpgcheck=0
enabled=1

 
[VT]
name=VT
baseurl=ftp://your_IP/pub/VT
gpgcheck=0
enabled=1

 
[Cluster]
name= Cluster
baseurl=ftp://your_IP/pub/ Cluster
gpgcheck=0
enabled=1

 
[CS]
name= ClusterStorage
baseurl=ftp://your_IP/pub/ ClusterStorage
gpgcheck=0
enabled=1

 
最后,清空yum cache,并测试使用新的yum  repository:
# yum  clean  all
# yum  repolist
# yum  list  all