码迷,mamicode.com
首页 > 系统相关 > 详细

Linux程序包管理总结

时间:2015-09-16 00:57:41      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:linux rpm yum

Linux程序包管理

相比于Windows系统,Linux的程序包的管理就没有那么简单了,当然在Linux系统中也有像Windows系统中EXE或者MSI安装包一样的安装包文件,可以直接实现进行程序包安装,但即是这样的程序包的安装也要比Windows复杂多了,当然,大家不要被我这两句话给唬到了,当你学过这课后,你会发现Linux的程序包管理其实也很简单的,同样你也会发现Linux的程序包管理比Windows的好玩儿多了。

 

     Linux中的程序包格式:

        .deb  源于debian系统的安装包格式

        .rpm  Redhat Package Manger 源于红帽,但已成为Linux公认行业标准

           包命名的常用规则

         Linux中对于一些复杂些的程序,常采用分包机制,即对于包实现的功能不同进行区分,如:

         主包:AppName-Version

                 支包:AppName-devel-Version  devel short fordevelop

              

            Version一般采用的格式为:major.minor.release

      例:htop-1.0.1-2.el6.x86_64.rpm
   name-version-release-arch

       

  程序包管理:

         打包

         安装

         卸载

         升级

         查询

         校验

        

         打包

                   打包是指将源码文件打包为一个RPM安装包的过程

                   打包常用工具rpmbuild,系统没有此命令请安装rpm-build工具

 

         Linux中有一种格式为src.rpm的文件并不是可以直接安装的RPM包,而是一种程序包的源码包文件,这种包需要先打包为RPM安装包才可以进行安装,它可以让我们对程序的功能进行配置,并根据自己的需要将程序打包为目标平台的安装包。

  对于SRPM包,先使用rpm –i appname.src.rpm进行解包,执行后会生成rpmbuild文件夹,其目录如下图,再使用rpmbuild命令打包

                               技术分享

rpmbuild –bb hping3.spec

在打包的过程中,如果该包所依赖的程序包未安装可能无法正常打包,需要先安装依赖包才能完成打包操作,打包完后会在rpmbuild文件夹中生成一些打包文件,其中在RPMS下,则有我们编译打包好的安装包RPM文件

 

         安装

       解压程序包将文件放到指定的目录,并对程序进行配置,添加系统相关设置

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

                                      -i   执行安装

                                -v   显示详细过程,-vv更详细的安装调试信息 -vvv

                                -h   显示进度条

 

                                     --nodeps:不管依赖包是否安装,依旧安装当前包

                                     --replacepkgs:重新安装程序包

 

         卸载:

                   rpm{-e|--erase} [--nodeps] PACKAGE_NAME

               -nodeps当提示有其它程序依赖此包时忽略继续卸载

 

         升级:

                   rpm{-U|--upgrade} [install-options] PACKAGE_FILE ...

        rpm {-F|--freshen}[install-options] PACKAGE_FILE ...    

 

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

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

 

                           --nodeps

                           --oldpackage:降级程序安装

                           --force -replacepkgs-replacefiles

 

         查询:

                   rpm{-q|--query} [select-options] [query-options]

 

                  查询选项:

                           -qa: 查询本机已经安装的所有程序包,常配合grep查找是否安装哪一包

                           -qf/PATH/TO/SOMEFILE: 查询此处的文件由哪个程序包安装生成;

 

                           -qc: 查询指定程序包安装生成的配置文件

                           -qd: 查询指定的程序包安装生成的文档

                           -qi: 查询指定的程序包的相关信息;

                           -ql: 查询程序包安装生成的所有文件的列表;技术分享

                           -q --scripts:查询程序包相关的脚本:

                                    preinstall:安装前脚本

                                    postinstall:安装后脚本

                                    preuninstall:卸载前脚本

                                    postuninstall:卸载后脚本

技术分享

                           -p: 查询针对是未安装的程序包文件;

 

         校验:

                   来源合法性验正:非对称加密

                   完整性验正:单向加密

 

                   导入密钥:rpm--import /PATH/TO/KEY_FILE

                   校验:rpm -K/PATH/TO/RPM_FILE

 

yum :  Yellowdog Updater Modified

yum是一个指向用户指定YUM仓库的程序包管理工具,yum仓库是一个用户定义好的程序包集合,yum工具可以自行解决程序依赖关系,我们就不用再为程序的依赖而头疼了~~

                   yum源可用的服务器类型格式:

                            ftp://hostname/PATH/TO/REPO  ftp服务器

                            http://hostname/PATH/TO/REPO  http服务器

                            file:///PATH/TO/REPO  本地Yum仓库,可将安装盘挂载本地作为yum仓库

 

         yum程序的配置文件:

                   /etc/yum.conf

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

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

                            一个文件通常用于一个或一组功能相近或相关的仓库,当然你可以定义自己的yum源,命名随意,但一定要是repo格式

 

                            定义一个yum源:

                                     [REPO_ID]        不可和其它重复

                                     name=          

                                     baseurl=            仓库地址

                                     #mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE

                                     enabled={1|0}  1为启用

                                     gpgcheck={1|0}  1为启用gpg检查

                                     gpgkey=        KEY文件位置

                                     cost=          花销,如果在多个仓库中有同一文件,则根据此值决定从哪儿下载安装

 

                            定义仓库指向可用变量:

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

                                     $basearch:当前系统的基本架构;

                                               i386,i486, i586, i686: i386

 

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

                设置仓库地址为通用镜像站地址,使用变更获取当前系统版本号、架构来定义正确的镜像站地址

 

         yum命令:

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

 

                            命令:

                                     安装:install

                                     卸载:remove |erase

                                     升级:update

                                     查询:

                                               info

                                               searchKEYWORD  搜索程序包,相当于yum listappname*

                                               listall|installed|availiable

                                               provides/PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成

                         yum provides /etc/passwd

                                     重新安装:reinstall

                                     降级:downgrade

                                     清理缓存:clean [packages | metadata | expire-cache | rpmdb | plugins | all ]                  yum仓库有所变动时,需要清理缓存,重新从服务器获取到最新仓库信息,比如出现yum安装程序包时提示下载失败

                                     生成本地缓存:makecache 

                                     包组:yum有对各程序包进行归类分组,我们可以直接对包组进行操作

                                               grouplist

                                               groupinfo"GRP_NAME"

                                               groupinstall"GRP_NAME"

                                               groupremove"GRP_NAME"

 

                                     仓库:列出当前yum源信息

                                               repolist[all|enabled|disabled]

                                               repoinfo[all|enabled|disabled]

 

         如何使用光盘当做本地仓库:

                   挂载光盘至某目录

                   定义仓库,使用file:///指向其访问路径即可

 

         创建本地仓库

       当我们有很多RPM包的时候,想把这些包的集合建立为一个仓库则需要使用createrepo工具将这个集合建立为一个仓库,这个过程相当于将程序包信息提取,生成一个对应的repodata文件夹,这也是一个可用Yum仓库所必须的一个文件夹,没有createrepo工具的话需要先安装createrepo工具

       然后使用如下命令建立仓库

                   createrepo/PATH/TO/RPMFILES/

       然后在.repo文件中把仓库地址指向该目录即可使用


Linux程序包管理总结

标签:linux rpm yum

原文地址:http://hubla.blog.51cto.com/1093504/1695156

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!