天天看点

本地Yum生成数据库及常用命令

如果您是使用在线的Yum源,您可以忽略这步。

简单说明下思路:从网上下载相应版本的DVD光盘的内容拷贝到本地的目录下,重新生成相应的xml信息。

注意一下,这里要用到这个createrepo命令,所以要保证这个命令存在,同时要重建一些文件。

下面我通过一个脚本来说明问题:

#!/bin/bash

# admin#wangxiaoyu.org

# 2009-09-23 19:26:24

# 2009-09-24 23:01:38 Added comments

# 2010-12-29 Added comments

###如果需要配合FTP/Web/NFS等服务器实现在线yum源的功能,请您修改这个脚本中生成yum客户端配置文件的语句

echo -en "Please input the path of the local Yum Server files:\n"

read yum_path

if [ -d $yum_path ]; then

        rm -f /etc/yum.repos.d/* #删除原先的yum客户端配置文件,有需要的话请事先备份

        find -L $yum_path -name repomd.xml -exec echo -en "" > '{}' \;  #清空旧的依赖数据文件*.xml

        if ! rpm -q createrepo ;then

                cd $yum_path/Server && rpm -ivh createrepo-* #保证createrepo软件已经安装

        fi

        for i in `find -L $yum_path -name repomd.xml` #采集旧的依赖数据文件*.xml,来生成新的

        do

                cd `dirname $i`

                cd ..

                rm -rf .olddata

                basefile=`basename $PWD`

                createrepo -g $i $PWD

                if [ $? ]; then #生成新的yum客户端配置文件,我主要是用来测试用的

                        cat >>/etc/yum.repos.d/server.repo <<EOF

# $basefile

[$basefile]

name=$basefile

baseurl=file://$PWD

gpgcheck=0

EOF

                fi

        done

fi

yum clean all && yum list

下面简单说一些常用到的yum命令:

        * install package1 [package2] [...]安装rpm包

        * update [package1] [package2] [...]更新rpm包

        * check-update同步yum仓库信息

        * upgrade [package1] [package2] [...]升级陈旧的rpm包

        * remove | erase package1 [package2] [...]删除已经安装的软件

        * list [...]列出仓库中所有的软件,常与grep配合使用

        * info [...]列出某一个或多个rpm包的详细信息,它类似于rpm -q --info [..]但yum的功能稍强一些,可以列出没有安装的软件信息

        * provides | whatprovides feature1 [feature2] [...]

        * clean [ packages | headers | metadata | dbcache | all ] “垃圾”清除        * makecache

        * groupinstall group1 [group2] [...] 按软件的分组安装软件,这个多与groupinfo配合使用,例如安装所有开发工具和相应的库文件

        * groupupdate group1 [group2] [...] 按软件的分组升级软件

        * grouplist [hidden] 列出分组的列表

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...] 列出分组的详细信息

        * search string1 [string2] [...] 查询某个或某几个rpm包

        * shell [filename] 

        * resolvedep dep1 [dep2] [...]

        * localinstall rpmfile1 [rpmfile2] [...] 通过yum来不在yum仓库范围的rpm包,这个很有用,经常用来自动解决一些依赖关系

        * localupdate rpmfile1 [rpmfile2] [...]

        * deplist package1 [package2] [...]

        * repolist [all|enabled|disabled]

        * reinstall package1 [package2] [...]在软件遭遇以外删除时,这个可以用来重新安装rpm包

        * help [command]万能的,你会看到上面的这些信息,得到的信息量绝对不亚于这里。或者可以通过man rpm来获得更详细的帮助信息。

     本文转自xiaoyuwang 51CTO博客,原文链接:http://blog.51cto.com/wangxiaoyu/205188,如需转载请自行联系原作者