Linux中的软件包管理:源代码形式,RPM软件包,YUM软件包

本篇博客的内容都来自Linuxcast.netlinux学习视频,这是自己整理的学习笔记,分享出来大家一起学习,并且这也是我第一次写博客,有什么问题请不吝赐教,在这里不胜感激。

这篇的内容偏向于理论,没有实践操作,后续可能会进行补充。


Linux中的软件包管理有三种形式,源代码形式,RPM软件包,YUM软件包

 

源代码形式

        绝大数开源软件以源代码的形式发布;源代码一般会打包成tar.gz的归档压缩文件;程序源代码需要编译成为二进制形式后才能够有使用。

源代码基本编译流程:

   1.    ./configure   检查编译环境,相关库文件以及配置参数并且生成makefile

   2.    make     对源代码进行编译,生成可执行文件

   3.    make install  将生成的可执行文件安装到当前计算机中

优点:

        1.使用源代码形式,编译出来的软件就是针对某个平台的,兼容性好。

        2.可在编译之前进行某些配置,可控性好。

        适用于所有系统,可定制

缺点:

        使用起来麻烦,源代码之间有大量的依赖关系,也就是说一个开源软件可能会使用到其他开源软件的功能,在安装时可能需要先安装所依赖的开源软件;

        编译时间长,极易出现错误。

 

RPM软件包管理

RPM:redhatPackage Manager,由ErikTroan和MarcEwing开发

RPM通过将源代码基于特定平台系统便以为可执行文件,并且保存相应的依赖关系

设计目标:使用简单;使用单一软件包文件发布(.rpm);可升级;追踪软件依赖关系;基本信息查询;软件验证功能呢;支持多平台

未能解决的问题:可以追踪软件依赖关系,但不能自己解决

                             无法解决跨平台问题,也就是说不同的平台需要编译出不同的RPM包

RPM基础命令:

 rpm -i software.rpm                  安装软件

 rpm -e software                        卸载软件

rpm -U software-new.rpm          升级形式安装

rpm支持通过http,ftp协议安装软件:  rpm -ivh http://www.xxxxx.com

可加入如下参数:-v   显示相应信息 ;   -h 显示进度条

RPM查询:

rpm -qa     列出这个操作系统当中安装的所有的rpm软件

rpm -qi   packagename    可查询该软件的所有信息

rpm -qf  filename            查询目标文件属于哪个rpm包

rpm -ql    packagename  查询指定已安装rpm软件包含的文件

rpm -qip  software.rpm    查询rpm文件的信息

rpm -qlp  software.rpm    查询rpm文件包含的文件

RPM验证:

软件在传播的过程中可能会被恶意的修改,因此为来安全起见系统中都会对软件加入验证功能。验证一般使用非对称加密算法,因此需要一个密钥

导入密钥:    

        rpm  --importRPM-GPG-KEY-CentOS-6(每个发行版本都有自己的密钥)

验证rpm文件:   rpm -K  software

验证已安装的软件: rpm -V software(用于查询操作系统中的某些文件是否在安装后被修改过)

 

YUM

YUM:YellowdogUpdater,Modified,是一个RPM的前端程序,目的是设计用于自动解决RPM的依赖关系问题。也就是用来管理RPM包的

特点: 

        自动解决依赖关系

        可对RPM进行分组,并基于组进行安装操作

        引入仓库概念,支持多个仓库

        配置简单

YUM引入仓库(repo)的概念,仓库用来存放所有现有的rpm软件包

        当用yum安装一个rpm软件时,如果存在依赖关系,会自动在仓库中查找依赖关系并且安装。仓库可以是本地的,也可以是通过HTTP,FTP或NFS形式集中的网络仓库。


YUM仓库:

        yum仓库用于保存管理rpm软件包,仓库的配置文件保存在/etc/yum.repos.d/目录下:

        格式:

                 [base]  
                 name=CentOS-$releasever- Base
                 #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
                 baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
                 gpgcheck=1
                 enabled=1
                 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

        解释:[xxx]仓库的名称;name 仓库的基本信息;baseurl 仓库的基本路径,有时候也会用mirrorlist,用于动态地获取baseurl;gpgcheck 用于是否打开校验;如果没有                   enabled属性,则默认是开启的,也就是值为1

yum配置文件必须以.repo结尾;一个配置文件内可以包含多个仓库的配置信息;/etc/yum.repos.d/可以保存多个配置文件


YUM基本命令:

yum install softwarename        安装指定文件(这里实际上是安装rpm软件包)

yum remove softwarename      卸载指定文件

yum update softwarename       更新指定文件

YUM查询:

yum search keyword     搜索,基于关键字的

yum list (all | installed | recent | updates)    列出全部的,已安装的,最近的,软件更新;其中,installed会显示出已经安装的软件,并且以安装的软件前面会加上一个“@”符号

yum  info packagename   显示制定软件的信息

yum whatprovides filename   查询哪个rpm软件包包含目标文件

 

创建YUM仓库

手工创建:

        1.将所有的rpm文件拷贝到一个文件夹中

        2.通过rpm命令手工安装createrepo软件:rpm -ivhcreaterepo.xxx,这个也可以用yum直接安装

        3. 运行命令createrepo -v /rpm-directory(yum仓库的绝对路径,创建好后会出现repodata文件夹)

        4.如果有分组信息,则在运行命令的时候使用-g参数自定分组文件

                 createrepo -g/tmp/*comps.xml  /rpm-directory

创建好后,本机可以通过file方式直接使用,如果需要作为对外的YUM仓库服务器,可以通过HTTP,FTP或NFS协议共享出去

仓库创建好后,需要在/etc/yum.repos.d/中添加一个配置文件,将它指向创建的仓库:

   vim myrepo.repo

                 [myrepo]  
                 name=MyRepo
                 baseurl=file://创建的仓库的绝对路径
                 gpgcheck=1
                 enabled=1

创建完成后需要使用yum clean all 来清楚缓存信息。 

 

你可能感兴趣的:(linux)