程序包管理:rpm、yum、编译详解
rpm详解:
一:大纲
1、什么是rpm
2、为什么要使用rpm
3、rpm能实现什么功能
4、rpm命令详解
二、正题
1、什么是rpm
rpm全称 RPM Package Manager,是一款行业标准的软件包管理器。在rpm未出现之前,linux上的程序包都是以源码方式存在,需要经过复杂的编译,才能能在linux系统上安装。
因为编译方式异常复杂,绝大部分人都无法正常完成编译工作,所以大大局限了linux的使用范围。因此,各大发行商都自己研发出了一套程序包管理器,可以代替人工完成编译工作,rpm就是redhat下一款比较通用的程序包管理器。
2、为什么要使用rpm
因为当下redhat与centos较其他发行版占比更高,最主要rpm功能比较强大,使用比较方便,所以非常有必要熟练掌握rpm命令的相关功能。
3、rpm能实现什么功能
rpm作为一款非常成熟的程序包管理器,可实现针对程序的安装、升级、卸载、查询与校验,且可对成程序安装包进行校验、查询。
4、rpm命令详解
rpm <options> <PACKAGE|PACKAGE_FILE|FILE>
安装:-i
rpm -i[install-option] PACKAGE_FILE(程序安装包)
install-option:
-v:verbose,详细信息;
-vv:更加详细的信息;
-h:hash marks,输出进度条,每个#代表2%的进度;
经典示例:
–test:测试安装,检查并报告依赖关系及冲突;
rpm -ivh –test PACKAGE_FILE
–nodeps:忽略依赖关系;
rpm -ivh –nodeps PACKAGE_FILE
–replacepkgs:重新安装;
rpm –ivh –replacepkgs PACKAGE_FILE
–nosignature:不检查包签名信息,不检查来源合法性;
rpm -ivh –nosignature PACKAGE_FILE
–nodigest:不检查包完整性信息;
rpm -ivh –nodigest PACKAGE_FILE
升级:
rpm -U[install-option] PACKAGE_FILE
rpm -F[install-option] PACKAGE_FILE
-U:升级或安装,如未安装,则执行安装;
-F:升级,只执行升级;
rpm -<U|F>vh PACKAGE_FILE
install-option:
–oldpackage:降级安装;
rpm -Uvh –oldpackage PACKAGE_FILE
–force: 强制升级;
RPM -Uvh –force PACKAGE_FILE
注意:(1)、不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装进新版本内核;
(2)、如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的统一配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名为(FILENAME.rpmnew)后提供
卸载:-e
rpm -e[options] PACKAGE(已安装的程序)
rpm –evh
options:
–allmatches:卸载所有匹配指定名称的程序包的各版本;
–nodeps:忽略依赖关系
–test:测试卸载,干嚎模式
查询:-q
rpm -q [select-options][query-options] <PACKAGE|PACKAGE_FILE>
[select-options]
-a:查询所有已经安装过的包;
-f:查询指定的文件有那个程序包安装生成;
-p:用于实现对未安装的程序包执行查询操作;
功能
–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序宝提供;
–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
[query-options]
-l: 程序安装生成的所有文件列表;
-i: 程序包相关的信息,版本号、大小、所属的包租、等;
-c: 查询指定的程序提供的配置文件;
-d: 查询指定的程序包提供的文档;
–provides: 列出指定的程序包提供的所有的CAPABILITY;
-R: 查询指定的程序包的依赖关系
–scripts: 查看程序包自带的脚本片段;
用法:
针对已安装程序:
-qi PACKAGE
-ql PACKAGE
-qf FILE
-qc PACKAGE
-ql PACKAGE
-qd PACKAGE
…..
针对rpm安装包:
-qpi PACKAGE_FILE
-qpl PACKAGE_FILE
-qpc PACKAGE _FILE
-qpl PACKAGE_FILE
-qpd PACKAGE_FILE
…..
校验:-V
一般情况下,rpm会自动校验已安装的rpm包
来源合法性验证
完整性验证
rpm -V PACKAGE
导入信任的包制作者密钥:
rpm –import
密钥位置:
/etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-#
镜像中的 RPM-GPG-KEY-CentOS-#
验证rpm安装包:
安装时会自动验证安装包;
手动验证:
rpm -k PACKAGE_FILE
数据库重建:
rpm 管理器数据库路径:/var/lib/rpm
查询操作:通过此处的数据库进行
centOS 6:
rpm {–initdb|rebuilddb}
–initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作;
–rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建;
centOS 7:
rpmdb {–initdb|rebuilddb}
–initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时
–rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建;
注:构建数据库时非常占用资源,如果系统正在繁忙时谨慎使用!!
rpm总结:
rpm作为目前linux系统中最常用的程序包管理器,其强大的功能是功不可没的。通过高度灵活的选项可以完成诸多管理操作,所以熟练掌握rpm命令是管理程序的不二法宝。
yum详解:
一、大纲
1、什么是yum
2、为什么要使用yum
3、yum能实现什么功能
二、正题
1、什么是yum
yum全称为 Yellow dog Updater, Modified,是一款运行在redhat和centos中的shell前端程序包管理器。能够从指定的服务器自动下载RPM包并且安装,(或从本地yum仓库中下载安装)可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
2、为什么要使用yum
虽然rpm功能强悍,但是rpm有一个致命的确定:无法解决程序依赖关系。这在程序管理中至关重要,因为一个程序或许依赖于众多程序才能运行,而众多程序中的某个程序又会依赖其他程序。。。这样会使程序的安装工作变得异常繁琐,严重影响了程序使用。所以这时就出现了一款能解决程序依赖关系的程序包管理器–yum。使用yum,最重要的是可以解决程序依赖关系,为批量安装程序节省了大量的时间。
3、yum能实现什么功能
yum功能与rpm类似,在解决依赖关系的基础上能实现对程序的安装、升级、卸载、查询、降级等。yum还可以在本地将所需要的rpm包手动创建为yum仓库,自动解决依赖关系。yum可支持ftp、http、file等常见协议,为yum提供更好的兼容性。
4、yum实现与各命令详解
yum可通过两种方式实现:一种是直接加载网上的yum仓库,前提是必须能连上互联网;另一种是加载本地yum源来实现安装。
首先说一下yum配置文件:(大写单词表示可自定义)
/etc/yum.conf:这个是yum的主配置文件,都是一些全局配置,一般如果没有特殊需求的话不用配置;
/etc/yum.repo.d/*.repo:这个是yum仓库的配置文件,每一个文件可以配置多个yum仓库;
想要实现yum仓库,首先必须要配置/etc/yum.repo.d/NAME.repo,其结构如下:
[repositoryID] :自定义名称与文件名相同
name=NAME :仓库的名称,可自定义
baseurl=url:// :仓库的具体地址,可以为ftp:// http:// file:///协议;
url:// :为镜像地址,镜像原必须与上面相同,可以不写;
enable={1|0} :默认为1,表示启用,0为关闭此yum仓库;
gpgcheck={0|1} :表示是否需要检查次yum的来源,0为关闭;
gpgkey=URL :提供检查来源的地址
enablegroups={1|0} :是否支持组管理
failovermethod={rounrobin|priority}:如有多个url时的选择模式,默认为轮询;
轮询 优先级
cost= :开销,表示如有多个repo文件时,读取此文件的优先级;
注:粗体表示的参数是必须的,其他的可以省略;
配置yum仓库:
如果是网络上的yum仓库,则baseurl直接写入网络yum仓库的地址,如下:
编辑/etc/yum.repo.d/NAME.repo (注:NAME是可自定义的)
[repositoryID]
name=NAME
baseurl=url:// (写入网上的yum仓库地址)
enable=1
gpgcheck=0
然后保存退出即可
如果是本地的,则如下:
本地仓库的安装包都在原版镜像下的Package(os6,7)下,所以可按照以下步骤参考进行;
mkdir /mnt/repo
mount /dev/cdrom /mnt/repo (如果镜像已经加载,清先卸载后重新挂载到指定目录)
编辑/etc/yum.repo.d/NAME.repo (注:NAME是可自定义的)
[repositoryID]
name=NAME
baseurl=file:///mnt/repo
enable=1
gpgcheck=0
然后保存退出即可
以上yum仓库就部署完毕
yum的用法:
yum [options] [command] [package …]
因为yum的参数太多,可使用 –help来详解,以下只列出一些常用和实用的选项
显示仓库列表:
yum repolist [all|enabled|disabled]
显示程序包:
yum list
# yum list [all | glob_exp1] [glob_exp2] […]
# yum list [available|installed|updates] [glob_exp1] […]
有但未安装 glob表达式
安装程序包:
yum install [PACKAGE1,PACKAGE2…..]
yum reinstall [PACKAGE1,PACKAGE2…..] (reinstall:重新安装)
注:在安装的过程中会弹出:
输入y继续安装;
降级安装:
yum downgrade package1 [package2] […]
升级程序包:
yum update [package1] [package2] […]
检查可用升级:
yum check-update
卸载程序包:
会提示是否卸载,选择是
查看程序包:
yum info package
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] […]
清理本地缓存:
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
yum makecache
搜索: 以指定的关键字搜索程序包名及summary(摘要)信息;
yum search string1 [string2] […]
查看指定包所依赖的程序及其提供的capabilities(功能):
yum deplist package1 [package2] […]
查看yum事物历史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐back|new|sync|stats]
示例:yum history list
安装及升级本地程序包:
localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
localupdate rpmfile1 [rpmfile2] […]
注:在实际工作中,可直接使用install后跟包名,yum会自动识别安装包并解决依赖关系;
包组管理命令:
yum还支持包组管理,使用方法同单个安装类似,只是加了group,例如:
grouplist:[hidden] [group wildcard] […]
groupinstall:group1 [group2]
groupupdate: group1 [group2]
groupremove group1 [group2]
groupinfo: group1 [group2]
yum的命令行选项:(命令行权限大于配置文件)
-y:表示自动安装,无需提示;
-q:表示静默安装,不显示安装过程;
–nogpgcheck:禁止进行gpgcheck;
–disablerepo=REPOIDGLOB:临时禁用此处指定的repo,主要用于在repo文件冲突的情况下使用;
–enablerepo=REPOIDGLOB:临时启用此处指定的repo
–noplugins:禁用所有插件
创建yum仓库:
creatrepo
createrepo是一款本地yum源制作工具,可以手动将一些rpm做成yum仓库,解决依赖关系。
默认此工具没有安装,需要先安装在使用:yum -y install createrepo
使用方法:可直接在rpm包目录里:createrepo ./
有一个常用选项:–basedir:指定repo存放位置(createrepo ./ –basedir /DIR )
最后再说一下repo配置文件中可用的变量:
因为一条yum仓库url在被多个用户访问时,每个用户的linux版本与平台都不一样,所以为了能够识别每个用户的系统版本与平台,就在url中引入变量,让系统自动完成系统与平台识别。
$releasever:当前OS的发行版的主版本号;
$arch:平台;
$basearch:基础平台
$YUM0-$YUM9 自定义变量
示例: http://mirrors.magedu.com/centos/$releasever/$basearch/os
程序包编译安装
一:大纲
1、什么是编译安装
2、为什么要使用编译安装
3、编译安装能实现什么功能
4、编译安装详解
二、正题
1、什么是编译安装
编译安装通俗的说是就是手动将程序的源码部署到系统中去,通常需要三步才能完成安装工作;
2、为什么要使用编译安装
编译安装是根据系统环境,在最优化的情况下完成代码编译工作,特点就是完全适应当前环境,可以最大化提升程序运行速度与系统稳定。
3、编译安装能实现什么功能
编译安装相比rpm包更加底层,所以可添加各种选项与参数来调节程序安装的过程,满足用户的需求,是一种更加高级的程序安装方式;再而且程序刚被发布是通常都是以源码包的方式,只能通过编译安装来实现功能,所以编译安装是安装程序的必要技能。
4、编译安装详解
编译安装通常需要三个步骤:
./configure (在源码包中)
make
make install:(相当使用install命令)
第一步:./configure
(1)通过选项传递参数,指定启用特性、安装路径等生成makefile文件;
(2)检查依赖到的外部环境;
(3)可通过–help来获取此包所支持的选项;
选项分类:
指定安装路径(默认/usr/local)
–prefix=/PATH/TO/SOMEWHERE:指定默认安装位置;
–sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;
System type:系统类型(交叉编译)
可选特性
–disable-FEATURE:禁止某特性
–enabled-FEATUR [=ARG]:启用某特性
可选包
–with-PACKAGE [=ARG] 依赖包,必须有此包才能实现某功能。
–without-PACKAGE:不需要某个包
第二步:make
根据makefile文件,构建应用程序;
第二步没有选项,这只是一个编译过程;
第三步:make install
将上一步编译完成后生成的程序文件复制到对应的目录中。
第三步也没有选项,这只是执行复制的一个过程。
安装后的配置:
安装完成后只是将程序文件部署到系统中,如果要使用的话,还需要以下步骤才能够真正完成程序安装;
(1)导出二进制程序目录至PATH环境变量中;
编辑文件/etc/profile.d/NAME.SH
export PATH=/PATH/TO/BIN:$PATH
(2)导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf (直接写入lib路径)
/usr/local/apache2/lib
让系统重新生成缓存:
ldconfig -v
(3)导出头文件:
ln -s include
(4)导出帮助手册:
编辑/etc/man.config
添加MANPATH路径
原创文章,作者:N25_韩奇洋,如若转载,请注明出处:http://www.178linux.com/66338
评论列表(1条)
总结的很好,请继续保持~~~加油!!