文章目录
- RPM管理
-
- Linux软件包介绍
-
- Linux软件包的种类
- 源码包
-
- 源码包缺点
- 安装位置
- 二进制包
-
- RPM包优点
- RPM缺点
- 安装默认位置
- RPM软件包简介
- RPM语法
- RPM软件包管理
-
- 安装RPM软件包
-
- 安装软件包
- 安装软件并显示详细信息和水平进度条
- 测试安装,并不实际安装
- 安装以soft开头的软件包
- 在已经安装了的情况下,依旧重新安装软件包
- 忽略软件包的依赖关系,安装软件包
- 忽略软件包的依赖关系,强制安装软件包
- 直接从HTTP网络地址中安装软件包
- 查询软件包
-
- 查看系统中所有安装的软件包
- 查询系统中是否已经安装指定的软件包
- 查找是否安装soft相关的软件包
- 查看一个文件属于哪个PRM包
- 获取RPM包的说明信息
- 查询指定该软件包所包含的文件列表
- 升级RPM包和刷新RPM软件包
-
- 升级软件包
- 刷新软件包
- 卸载RPM软件包
-
- 卸载指定软件包
- 删除软件包及其软件包依赖项
- RPM数据库
-
- 初始化RPM数据库
- 从安装软件中重建RPM数据信息
- 杂项
RPM管理
Linux软件包介绍
在linux系统中,如果要完成一些功能,则需要安装软件来支持,安装软件就需要软件包,接下来笔者带你了解什么是软件包!
Linux软件包的种类
在Linux中使用的软件包大致分为两类,一类是二进制的软件包,还有一类是含有源码的软件包;
-
:源码包是编程人员写的程序代码文件,不能够直接在计算机上运行;源码包需要进行编译,编程二进制的软件包后才能安装使用;源码包一般是压缩后的文件;源码包不能直接执行,需编译,可对源码进行修改;源码包
-
(CentOS系统中一般指rpm包): 二进制包指的是已经安装好了的软件包,只需要直接安装就可以使用;二进制包不需要编译,直接下载即可使用;二进制包需要根据自己的计算机CPU和操作系统去选择合适的包来安装;二进制包可以直接执行,不需要编译;二进制包
源码包
源码包是编程人员写的程序代码文件,不能够直接在计算机上运行;源码包需要进行编译,编程二进制的软件包后才能安装使用;源码包一般是压缩后的文件;源码包不能直接执行,需编译,可对源码进行修改;
####源码包优点
- 开源,源码可见,且可以修改
- 配置更加灵活,可以自由选择所需的功能
- 软件是编译安装,所以更加适合自己的系统,更加稳定和高效
- 卸载方便,只要将配置的安装的文件夹删掉即可,不能残留任何垃圾
源码包缺点
- 安装过程步骤较多,尤其安装较大的软件集合时,容易出现拼写错误
- 编译时间长
- 因为是编译安装,安装过程中一旦报错新手很难解决
安装位置
安装在指定位置,一般是 /usr/local/软件名/
二进制包
(CentOS系统中一般指rpm包): 二进制包指的是已经安装好了的软件包,只需要直接安装就可以使用;二进制包不需要编译,直接下载即可使用;二进制包需要根据自己的计算机CPU和操作系统去选择合适的包来安装;二进制包可以直接执行,不需要编译;
RPM包优点
- 管理简单,安装、查询、卸载简单
- 安装速度快
RPM缺点
- 不可以看到源代码
- 功能选择不如源码包灵活
- 依赖性:有可能软件包之间依赖关系比较复杂,安装A需要依赖B和C,只有先安装B和C后,才能安装A
安装默认位置
-
:配置文件安装目录/etc
-
:可执行命令安装目录/usr/bin/
-
:程序所使用的函数库保存位置/usr/lib/
-
:基本的软件使用手册保存位置/usr/share/doc/
-
:帮助文档保存位置/usr/share/man/
RPM软件包简介
RPM
是
Red-Hat Package Manager
(RPM软件包管理器)的缩写,rpm工具用于管理
.rpm
格式的软件包,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了
RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
RPM语法
功能说明:安装、删除、升级、刷新、查询
语法:
选项及参数
-
:查询所有软件;-a
-
:设置包装软件的完成阶段,并指定软件包的文件名称;-b<完成阶段><软件包>+或-t <完成阶段><软件包>+
-
:只列出组态配置文件,本参数需配合"-l"参数使用;-c
-
:只列出文本文件,本参数需配合"-l"参数使用;-d
-
:删除指定的软件;-e<软件包>或--erase<软件包>
-
:查询拥有指定文件的软件;-f<文件>+
-
:软件安装时列出标记;-h或--hash
-
:显示软件的相关信息;-i
-
:安装指定的软件包;-i<软件包>或--install<软件包>
-
:显示软件的文件列表;-l
-
:查询指定的RPM软件包;-p<软件包>+
-
:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;-q
-
:显示软件的关联性信息;-R
-
:显示文件状态,本参数需配合"-l"参数使用;-s
-
:升级指定的软件包;-U<软件包>或--upgrade<软件包>
-
:显示指令执行过程;-v
-
:详细显示指令执行过程,便于排错。-vv
-
:在指定的软件里加上新的签名认证addsign<软件包>+
-
:安装所有组件--allfiles
-
:删除符合指定的软件所包含的文件--allmatches
-
:发生错误时,重新配置文件--badreloc
-
:设置产生软件时,欲当做根目录的目录--buildroot<根目录>
-
:显示软件的更改记录--changelog
-
:验证该软件的签名认证--checksig<软件包>+
-
:完成软件的包装后,删除包装过程中所建立的目录--clean
-
:设置欲存放RPM数据库的目录--dbpath<数据库目录>
-
:显示每个文件的验证信息。本参数需配合-l参数使用--dump
-
:安装软件时,不要安装文件--excludedocs
-
:忽略在指定目录里的所有文件--excludepath<排除目录>
-
:强行置换软件或文件--force
-
:指定FTP代理服务器--ftpproxy<主机名称或IP地址>
-
:设置FTP服务器或代理服务器使用的通信端口--ftpport<通信端口>
-
:指定HTTP代理服务器--httpproxy<主机名称或IP地址>
-
:设置HTTP服务器或代理服务器使用的通信端口--httpport<通信端口>
-
:不验证软件包的结构正确性--ignorearch
-
:不验证软件包的结构正确性--ignoreos
-
:安装前不检查磁盘空间是否足够--ignoresize
-
:安装软件时,一并安装文件--includedocs
-
:确认有正确的数据库可以使用--initdb
-
:更新数据库,当不变动任何文件--justdb
-
:不执行任何完成阶段--nobulid
-
:不验证软件包的相互关联性--nodeps
-
:不验证文件的属性--nofiles
-
:略过所有GPG的签名认证--nogpg
-
:不使用MD5编码演算确认文件的大小与正确性--nomd5
-
:略过所有PGP的签名认证--nopgp
-
:不重新编排软件的安装顺序,以便满足其彼此间的关联性--noorder
-
:不执行任何安装script文件--noscripts
-
:不执行该软件包装内的任何script文件--notriggers
-
:升级成旧版本的软件--oldpackage
-
:安装软件时显示完成度百分比--percent
-
:建立管道,把输出结果转为该执行指令的输入数据--pipe<执行指令>
-
:若重新配置文件,就把文件放到指定的目录下--prefix<目的目录>
-
:查询该软件所提供的兼容度--provides
-
:设置档头的表示方式--queryformat<档头格式>
-
:列出可用于档头格式的标签--querytags
-
:使用指定的配置文件--rcfile<配置文件>
-
:安装原始代码软件,重新产生二进制文件的软件--rebulid<软件包>
-
:以现有的数据库为主,重建一份数据库--rebuliddb
-
:此参数的效果和指定--recompile<软件包>
参数类似,当不产生软件包--rebulid
-
:把本来会放到原目录下的文件改放到新目录--relocate<原目录>=<新目录>
-
:强行置换文件--replacefiles
-
:强行置换软件--replacepkgs
-
:查询该软件所需要的兼容度--requires
-
:删除现有认证,重新产生签名认证--resing<软件包>+
-
:完成软件的包装后,删除原始代码--rmsource
-
:删除原始代码和指定的文件--rmsource<文件>
-
:设置欲当做根目录的目录--root<根目录>
-
:列出安装软件的script的变量--scripts
-
:设置文件的权限--setperms
-
:设置文件的拥有者和所属群组--setugids
-
:直接略过指定完成阶段的步骤--short-circuit
-
:产生PGP或GPG的签名认证--sign
-
:设置产生的软件的安装平台--target=<安装平台>+
-
:仅做测试,并不真的安装软件--test
-
:设置检查时间的计时秒数--timecheck<检查秒数>
-
:查询该软件的包装者--triggeredby<软件包>
-
:展示软件包内的包装Script--triggers
-
:此参数的效果和指定--verify
参数相同-q
-
:查询该软件对指定的功能特性所提供的兼容度--whatprovides<功能特性>
-
:查询该软件对指定的功能特性所需要的兼容度--whatrequires<功能特性>
RPM软件包管理
RPM软件包管理主要有安装、删除、升级、刷新、查询这五种基本操作模式
安装RPM软件包
使用
rpm -i
命令可以在Linux系统中安装RPM软件包
rpm安装软件常用参数说明
-
:安装软件包-i
-
:安装软件时显示命令的执行过程-v
-
:安装软件时输出hash记号:#-h
安装软件包
安装软件并显示详细信息和水平进度条
####强制安装软件包
测试安装,并不实际安装
安装以soft开头的软件包
通过以下方式可以一次安装多个软件包
在已经安装了的情况下,依旧重新安装软件包
忽略软件包的依赖关系,安装软件包
忽略软件包的依赖关系,强制安装软件包
直接从HTTP网络地址中安装软件包
查询软件包
使用
rpm -q
命令可以在Linux系统中查询RPM软件包
rpm查看软件常用参数说明
-
:查询软件包-q
-
:查询软件包的文件-p
-
:显示软件包中的文件列表-l
-
:显示安装的所有软件列表-a
-
:查询拥有指定文件的软件包;-f<文件>
-
:显示软件的依赖性(关联性)信息;-R
查看系统中所有安装的软件包
查询系统中是否已经安装指定的软件包
查找是否安装soft相关的软件包
查看一个文件属于哪个PRM包
获取RPM包的说明信息
查询指定该软件包所包含的文件列表
升级RPM包和刷新RPM软件包
更新/刷新软件rpm常用参数说明
-
:升级指定的软件-U
-
:刷新指定的软件-F
-
:升级/刷新软件时显示命令的执行过程-v
-
:升级/刷新软件时输出hash记号:#-h
升级和刷新的区别
-U
表示升级或安装,如果没有老版本,就进行安装。如果有老版本,升级之后删除老版本
-F
表示刷新,前提是有老版本,有新版本就升级,没有新版本就升级,如果没有安装该软件则不会安装台软件
升级软件包
刷新软件包
卸载RPM软件包
使用
rpm -e
命令可以在Linux系统中卸载RPM软件包
卸载软件包参数常用说明
-
:从系统中移除指定的软件包-e
卸载指定软件包
删除软件包及其软件包依赖项
RPM数据库
参数
-
:确认有正确的数据库可以使用--initdb
-
:更新数据库,当不变动任何文件--justdb
-
:以现有的数据库为主,重建一份数据库--rebuliddb
初始化RPM数据库
从安装软件中重建RPM数据信息
杂项
rpm -ivh package.rpm 安装一个rpm包
rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告
rpm -U package.rpm 更新一个rpm包但不改变其配置文件
rpm -F package.rpm 更新一个确定已经安装的rpm包
rpm -e package_name.rpm 删除一个rpm包
rpm -qa 显示系统中所有已经安装的rpm包
rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包
rpm -qi package_name 获取一个已安装包的特殊信息
rpm -qg "System Environment/Daemons" 显示一个组件的rpm包
rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表
rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表
rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表
rpm -q package_name --whatprovides 显示一个rpm包所占的体积
rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l
rpm -q package_name --changelog 显示一个rpm包的修改历史
rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供
rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表
rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书
rpm --checksig package.rpm 确认一个rpm包的完整性
rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性
rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
rpm -Va 检查系统中所有已安装的rpm包- 小心使用
rpm -Vp package.rpm 确认一个rpm包还未安装
rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包
rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包