本篇博客的内容都来自Linuxcast.net的linux学习视频,这是自己整理的学习笔记,分享出来大家一起学习,并且这也是我第一次写博客,有什么问题请不吝赐教,在这里不胜感激。
这篇的内容偏向于理论,没有实践操作,后续可能会进行补充。
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 来清楚缓存信息。