Linux学习之路8-RPM及YUM的使用

 

RPM及YUM的使用

 

 

RPM包管理器:RPM is package manage

    程序包的组成部分:

        二进制程序:/bin, /sbin,/ /usr/bin, /usr/sbin,

   库文件:/lib64, /usr/lib64

   配置文件:/etc

   帮助文件:manual, info

        RPM包的命名:

         1)分包机制 核心包testapp-version  分支包 testapp-devel-version

    Version 主版本号major(重大功能改进等)-次版本号minor(小幅功能修改)-修正号release(通常是bug的修复)

    例:bash-4.4.2.tar.gz

 

         2)命名机制:

       name-version-release.arch.rpm

       说明:bash-4.2.4-1.el7.x86_64.rpm

         bash 软件名称

         4.2.4程序版本号

         1.el7 其中1是软件包版本号,作者有可能不断改进,el7是适用操作系统

         X86_64硬件平台,还有i386,i486,i586,i686,x86_64、ppc、sparc、alpha

        RPM包的制作:rpmbuild命令,不多做介绍

 

RPM包管理命令:

    查询功能

        1.已安装软件的查询

         1)对系统中已经安装软件的查询

                  语法:rpm �Cq 软件名

                  例:

                            wKiom1X1lGOAjV-vAABbKsV2Zic717.jpg

 

            2)查看系统中所有安装的包就用rpm �Cqa,输出信息太长后面还可以管道加more分页查看

                            wKioL1X1lqnS9DvPAAInS5qC8YA211.jpg

 

                    3)在所有已经安装软件中查找某个软件

                            语法:rpm �Cqa | grep httpd

                            wKiom1X1lI7DCzWbAACZQzSPznk752.jpg

 

                    4)查询一个已安装文件属于哪个软件包,这里用which httpd查询它的绝对路径

                                 wKioL1X1ltTQMysaAABvFB9HnSE219.jpg 

                    

                    5)查询一个已安装软件包的信息

                  语法:rpm �Cqi httpd

wKiom1X1lLTTHqllAAKZo5TPqNo685.jpg

 

            6)查询已安装软件包的文件都安装到何处,或者是列出已安装软件包所安装的文件

                  语法:rpm �Cql httpd

                            wKioL1X1lwvBVAGUAAFPFKBqCb0467.jpg

 

            7)查看已安装软件的配置文件

                  语法:rpm �Cqc httpd

                            wKiom1X1lO7gmeDQAAOo08PovvU582.jpg

 

            8)查看已安装软件的文档安装位置

                  语法:rpm �Cqd httpd

                            wKioL1X1lzahJ3p2AAG21c9wm9A287.jpg

 

            9)查看已安装软件所依赖的软件包及文件

                  语法:rpm �CqR httpd

                            wKioL1X1l03yJ9YrAAHrgSJPzAw352.jpg

 

            技巧:可以把一系列的查询条件组合起来使用,例:rpm �Cqil httpd 就一次输出信息了

 

              2.未安装软件包的查询

            1) 查看的前提是要有一个.rpm文件,对现有rpm文件的查看,其实就是在查看的基础上增加了一个p参数1)查看一个软件包的用途、版本等信息

         rpm �Cqip 软件名

wKiom1X1lU6AuF2KAAOgn4ukYjw469.jpg

 

            2)查看一件软件包所包含的文件

                        语法: rpm -qpl 软件包.rpm

                        例:

                        [root@dx201-lvm RPMS]# rpm -qpl lynx-2.8.5-23.i386.rpm

 

            3)查看软件包的文档所在的位置

                        语法: rpm -qpd 软件包.rpm

                        例:

                        [root@dx201-lvm RPMS]# rpm -qpd lynx-2.8.5-23.i386.rpm

 

            4)查看一个软件包的配置文件

                        语法: rpm -qpc 软件包.rpm

                        例:

                        [root@dx201-lvm RPMS]# rpm -qpc lynx-2.8.5-23.i386.rpm

 

            5)查看一个软件包的依赖关系

                        语法: rpm -qpR软件包.rpm

                        例:

                        [root@dx201-lvm RPMS]# rpm -qpR lynx-2.8.5-23.i386.rpm

 

RPM包的安装

        rpm {-i|--install} [install-options] PACKAGE_FILE ...

        -i 安装

        -v 显示安装进程,如果需要更详细信息可用-vv或-vvv

        -h 安装时输出hash记号(#),进度条

        --test 只对安装进行测试,或者用于检测依赖关系,并不实际安装

        --nodeps 忽略依赖关系

        --replacepkgs 重装,已安装软件再安装多一次

        --prefix 将软件安装到指定路径

        --force 强制安装,忽略软件及文件等冲突

         

        例:rpm -ivh --test php-common-5.3.3-40.el6_6.x86_64.rpm  测试安装

wKioL1X1mBvjxJRYAACnPLIUfaU480.jpg

 

 

升级:

      rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm

          -Uvh: 如果有旧版程序包,则升级之;如果没有,则安装之;

          -Fvh: 如果有旧版程序包,则升级之;如果没有,则不安装;

          --oldpackage:降级,由新版本降为旧版本

          --nodeps 忽略依赖关系

 

         例:rpm -Fvh php-common-5.3.3-40.el6_6.x86_64.rpm

             rpm -Uvh php-common-5.3.3-40.el6_6.x86_64.rpm

 

卸载:

      rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

      例:rpm -e php-common-5.3.3-40.el6_6.x86_64.rpm

 

RPM包检验、导入签名(包来源合法性验证、完整性验证)

    密钥导入

     语法:rpm �Cimport key

        wKioL1X1mEGD_TEiAABu9Mphi74389.jpg

 

    包检验

     语法:rpm �CK 软件名称

        wKiom1X1liCwMdk4AACgsULdb-8769.jpg

        

 

YUM: Yellowdog Updater Modified

 

配置文件

/etc/yum.conf

    定义全局配置:对所有仓库都适用的配置

/etc/yum.repos.d/*.repo

    一个文件通常用于一个或一组功能相近或相关的仓库

 

repo文件解析(定义一个仓库指向):

    [REPO_ID]唯一ID,可以在一个文件内定义多个

    name= 该组的说明

    baseurl= 源的地址链接

    # mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE地址列表

    enabled={1|0} 该配置是否生效

    gpgcheck={1|0} 是否检查合法来源

    gpgkey= key路径

    cost= 相当与优先级,越小优先级越高

 

定义仓库指向可用变量:

    $releasever: 引用当前系统的主版本号;

    $basearch: 当前系统的基本架构i386, i486, i586, i686,x86_64

    例:http://mirrors.magedu.com/CentOS/$releasever/os/$basearch

 

命令

 

安装:install 例:yum �Cy install httpd 安装httpd并且无需确认

 

卸载:remove

 

   升级:updates  例:yum list updates列出已安装的可升级的软件包列表

yum check-update很像 yum list updates 但是如果有可用更新的话会返回退出代号 100。方便写 shell 脚本

 

查询

     info  例:yum info httpd

     search KEYWORD 例:yum search httpd

     list  all|installed|availiable

         例:

             yum list 默认列出所有,和list all一样

yum list all 列出所有软件仓库里和系统已安装的包

             yum list installed 列出系统已经安装的包

             yum list availiable 列出所有可用的软件仓库可安装的包

yum list updates这个命令列出已安装的可升级的软件包列表

 yum list recent这个命令列出最近 7 天加入的软件包列表

 

    provides /PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成,类似rpm -qf

           例:yum provides `which httpd`

 

重新安装:reinstall

           例:yum reinstall autofs

 

降级:downgrade

 

清理缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

        例: yum clear all

             yum clean packages

             yum clean metadata

 

生动生成缓存:makecache

         例:yum makecache就是把服务器的包信息下载到本地电脑缓存起来

配合yum -C search xxx使用,不用上网检索就能查找软件信息

执行完 yum makecache之后,你可以用yum search subversion

和yum -C search subversion试下,看看二者速度差别有多大

 

 

包组管理:

        grouplist

        groupinfo groupname

        groupinstall groupname

        groupremove groupname

grouplist

例:yum grouplist这个操作将为你的系统在两个单独的列表中列出所有已经安装的和可用的组。

 

groupinfo

例:yum groupinfo groupname

该操作将显示每个组的详细信息,包括:描述信息,是必须安装还是默认或者可选安装包。

 

groupinstall

例:yum groupinstall groupname

安装命名组的包

 

groupupdate

例:yum groupupdate groupname

升级命名组的包

 

groupremove

例:yum groupremove groupname

删除在命名组中的任何类型的所有包,并且所有依赖于该组中的包也会被删除。

 

 

YUM技巧

 

1)更换其他YUM源,新增或编辑/etc/yum.repo/yumname.repo文件,更改baseurl,指向新的源即可

 

wKioL1X1mG-RDcWSAACDI6aOsIU345.jpg

 

2)创建本地仓库,建立本地源

 

先创建源的本地目录mkdir /local-yum,再在其目录下创建一个放置rpm包的目录mkdir /local-yum/i386,然后拷贝rpm包到i386目录下,最后用createrepo /local-yum 生成源必须的repodata目录及文件,最后修改/etc/yum.repo.d/yumname.repo文件即可

 

wKiom1X1lk6gNlvXAACHsqqe5ek546.jpg

 

3)利用http服务建立本地YUM源

 

  •  首先安装httpd服务:yum �Cy install httpd

  •  编辑/etc/httpd/conf/httpd.conf里的#ServerName www.example.com:80,改为ServerName localhost:80,如果有自己的域名改成域名也可以

  •  在/var/www/html下创建目录mkdir �Cp /local-yum/i386

  •  拷贝rpm包到/local-yum/i386下

  •  建立源Createrepo /local-yum

  •  启动httpd服务:server httpd start

  •  设置开机启动httpd服务:chkconfig httpd on

  •  修改/etc/yum.repo.d/yumname.repo文件,baseurl=http://localhost/local-yum

 

4)本地源如果增加了新的rpm包,需要再运行一次createrepo 源目录 以便更新配置文件

 

5)可以利用reposync命令同步软件到本地

   例:reposync �Cp /local-yum/i386 �Crepoid=aliyun

     根据repo文件中的aliyun字段的配置,把上面的软件同步到/local-yum/i386目录下

 

你可能感兴趣的:(linux,yum,rpm)