Linux基础之软件包管理

一、介绍

现在Linux上软件的安装方式有多种,有源码包编译,软件包管理器,软件包管理器前端工具,通用二进制编译等。源码包,优点是,灵活性和可定制性比较好,缺点是,技术要求高,操作复杂,虽然网上有编译安装软件的文档,也有很多人在使用,也都是默认或者简单配置后编译的。后来出了软件包管理工具RPM,RPM软件包管理软件方便多了但是它的依赖关系让人头疼,所以又推出出了YUM解决了让人头疼的依赖关系。在这里我给大家介绍一下我学到的几种Linux软件安装方式。


二、软件包的组成

   1、二进制文件

       所分布的目录:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin

   2、库文件

      所分布的目录:/lib,/usr/lib,/usr/local/lib

   3、配置文件

       所分布目录:/etc

   4、帮助文件

       手册:README INSTALL /usr/share/doc

       man文档:/usr/share/man  定义man文档的配置文件定义在/etc/man.config

三、程序安装方式

   1、通用二进制编译:别人编译好的,解压之后配置就能使用。

   2、软件包管理器:使用rpm命令安装就可以使用了,但安装时要考虑到依赖关系。

   3、软件包管理器前端工具:可以自动解决软件包的依赖关系。

   4、源码包:源码包就是程序的源代码,必须通过编译器编译成二进制后才能使用,在编译时,软件所需的库文件一定要有,不然编译是不能成功的。


四、RPM软件包管理工具

   RPM: RPM Package Manager

   1、基本功能:

       打包、安装、查询升级、校验、卸载、数据库管理(重建)

   2、rpm软件包包含:

       文件清单

       文件存放路径

       提供的功能说明

       依赖关系

   3、数据库:软件包信息,软件包校验

   4、源程序命名方式:

       name-version.tar.{gz|bz2|xz}

           版本号:major.minor.release 主版本号.次版本号.发行号

   5、rpm包的命名方式:

       name-version-release.arch.rpm

           发行号:用于标识rpm包的本身发行号,可还包含所适用的操纵做系统

           例如:el6:RHEL6

           arch:主机平台

           例如:i386、x86_64、amd64、ppc、noarch不区分平台

注意:下载软件包时要注意区分操作系统和平台,不然可能会装不上的

   6、rpm分包

       主包:核心包

       分包:支包

           例如:bind

                 bind-devel    

   7、常用软件包下载地址:

       http://mirrors,sohu.com

       http://rpmfind.net

       http://rpm.pbone.net

   8、rpm包的验证机制:

       来源的合法性、软件包的完整性

       RrdHat系列的官方公钥:

           /etc/pki/rpm-gpg/

               RPM-GPG-KEY-redhat-

       可以使用rpm命令检测软件包的合法性

           rpm -K 软件包名

           rpm -checksig 软件包名

   9、安装软件包:rpm -i /path/to/rpm_file1 rpm_file2...

       -i|--install    :安装一个新的软件包      

           Vendor:rpm软件包的制作者

           Release:发行号

           Build Date:软件包编译的时间

           Install Date:软件包安装的时间

           Build host:在那个系统上编译成rpm包的

           License:软件包的许可证

           Singnature:软件包签名信息

           Packager:软件包制作者

           URL:软件包的链接地址

           Summary:简要说明信息

           Description:详细说明信息

       -v    :显示安装过程,-vv显示更详细的安装过程

       -h    :以#显示安装进度。一个#号表示2%的进度;

       -ivh  :通常这几个选项组合使用

       --nodeps    :安装时忽略依赖关系

       --test    :测试安装

       --replacepkgs    :重新安装

   10、卸载软件包:

       rpm -e    :卸载一个软件包

   11、查询软件包:rpm -q

       -q|--query

       -qa    :查询所有已安装的软件包

       rpm -qa |grep 'pattern'

       -qi    :查询软件包的摘要信息

       -ql    :查询软件包生成的文件清单:

       -qf    :查询某文件由那个软件包安装生成:

       -qc    :查询包安装生成的配置文件

       -qd    :查询包安装生成的帮助文件

       -q --scripts    :查询软件包相关的脚本

           preinstall    :安装前脚本

           postinstall   :安装后脚本

           preuninstall  :卸载前脚本

           postuninstall :卸载后脚本

   12、查询尚未安装的包的相关信息

       rpm -qpi /path/to/rpm_file

       -qpi    

       -qpl

       -qpd

       -c

       --scripts            

   13、升级:

       -U:升级+安装

       -F:升级

       -Uvh

       -Fvh


       --force    强制安装

       --nodeps    不检查依赖关系


注意:内核不应该升级,应该尽可能安装,允许多版本并存;

   14、校验:rpm -V 包名


   15、rpm数据库

       rpm database:/var/lib/rpm

       重建rpm数据库

           rpm --initdb    :新建,不覆盖原有的数据库

           rpm --rebuilddb    :覆盖,覆盖原有数据库(常用)

   16、源码格式的rpm包:rpm-name.varsion.release.src.rpm

       不能直接使用,需要打包之后才能安装使用

       打包rpm的包制作过程是根据spec文件来完成的。


五、YUM软件包管理

YUM:Yellow dog Updater, Modified  rpm的前端工具

   1、自动解决依赖关系

   2、repository:仓库,yum源

       判断是不是yum源

           repodata/    :所在的父目录就是yum仓库,如果当前目录有repodata就说明这是一个yum仓库

           RHEL6:的光盘镜像就是一个yum源

           例如:把RHEL6的光盘挂载到/media/cdrom,那yum源配置文件里"baseurl=file:///media/cdrom"

  3、客户端:

       /etc/yum.conf    //yum主配置文件

       /etc/yum.repos.d/*.repo    //yum配置文件

       全局配置//对所有的yum仓库都生效

       /etc/yum.conf

[main]    //定义yum源名称
cachedir=/var/cache/yum    //定义yum的缓存目录
keepcache=0    //保存缓存
debuglevel=2    //调试级别
logfile=/var/log/yum.log    //日志文件所在目录
distroverpkg=redhat-release    //验证rpm发行版所使用的密钥文件
tolerant=1    //忽略已安装的软件
exactarch=1    //必须做平台的精确匹配
obsoletes=1    //是否检查废弃的包
gpgcheck=1    //是否检查rpm包的签名,验证rpm包来源的合法性
plugins=1    //是否启用插件
# Note: yum-RHN-plugin doesn't honor this.
metadata_expire=1h    //缓存文件在本地缓存多长时间

       配置文件 /etc/yum.repos.d/*.repo

[repo]
name=Primary Yum repository
baseurl=http://mirror.sohu.com/fedora-epel/6/i386/    //yum源网址
enabled={0|1}       //{不开启|开启}
gpgcheck={0|1}      //{不检查|检查签名}
gpgkey=file:///etc/pki/RPM-GPG-KEY-redhat-base    //指定验证用的密钥文件

  4、 yum命令

        1)查询 yum list

           list {all|installed|available}    :列出软件包 {所有|已安装|可安装}

           repolist {all|enabled|disabled}   :列出yum源  {所有|开启的|未开启的}

           info packag_name    :查看软件包信息,也可以查询未安装的软件包的信息

           groupinfo "group_name"    :查询包组的信息

           clean {packages|metadata|expire-cache|rpmdb|plugins|all}    :清除yum缓存

               makecache    :生成yum缓存

       2)安装 yum install

           install -package_name

               yum -y    :自动回答为yes

           reinstall package_name ...    :重新安装软件包

           groupinstall "package-group_name"    :安装一个包组    

          安装开发组:编译软件包时基本就没有问题了,建议初学者在编译软件之前把这几个包组装上


RHEL6,CentOS6: "Development tools"、"Server Platform Development" "Desktop Platform Development"
RHEL5, CentOS5: "Development tools"、"Development Libraries"

           localinstall               :安装本地软件包;rehl6上直接用yum install就可以了

           --nogpgckeck                :安装时不对软件包做验证

       3)升级 yum update

           check-update                :查询可升级的包

           update package_name         :升级软件包

           update-to                   :升级到指定的版本

           groupupdate "group_name"    :升级包组

       4)卸载 yum remove

           remove package_name ...     :卸载一个软件包

           groupremove "group_name"    :卸载一个包组


   我总结的软件包管理rpm和yum的知识就这些了,如有不足之处请多提宝贵意见,谢谢!

你可能感兴趣的:(rpm,yum,软件包管理)