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文件中把仓库地址指向该目录即可使用
原文地址:http://hubla.blog.51cto.com/1093504/1695156