一,linux下安装程序的方法
程序由源代码编译而来,在linux下我们可以通过编译源代码的方式来安装软件。但这种方法对操作人员的要求相对较高,并且在编译的过程中会产生各种运行此程序所必须的文件,这些文件被放置在系统中不同的目录下,不便于管理。因此linux发行版的发行商,通常会把源程序编译后,以特定的组织形式提供给用户,并且提供相应的程序包管理工具来管理此类程序包。rpm就是这样一类程序包管理器。
rpm最早适用于redhat系列的linux发行版,而现在它已经以其优秀的特性被LSB(linux标准委员会)定为linux上程序包管理器的行业标准。
二,rpm包简介
一般来讲,程序由二进制文件,库文件,配置文件,帮助文件等,四部分组成,按照LSB指定的FHS规格规定,这些文件需要被放置在不同的路径下(当然这不是必须的,不在规定路径下放置,程序未必不能运行),使用rpm程序包管理器管理程序,会在/var/lib/rpm生成数据库文件,记录安装程序的详细信息,以方便后期的卸载,升级,查询等工作。
使用rpm安装软件,首先得有对应平台下的rpm程序包。程序包的命名方式一般是这样的:appname-VERSION-RELEASE.ARCH.rpm,例如zsh-4.3.10-9.el6.x86_64.rpm,有给出版本平台相关信息,使用rpm程序包的时候一定要选择对应的程序包哦。
三,rpm的使用方法
作为程序包管理器,其功能主要包括:安装,卸载,升级,查询,校验等五方面的内容下面我们来简单介绍下他们的用法。
1,安装
语法:rpm {-i|--install} [install-options] PACKAGE_FILE1...
安装一个程序包最简单的命令可以表示为rpm -i package.rpm。当然rpm还提供了更多的选项来给我们使用,常用的安装选项有:
-v:显示安装过程,-vv则表示显示更详细的安装过程。
-h:以#号来的形式来显示安装进度,每个#号表示5%的进度。
--test:不执行真正的安装过程,而仅报告依赖关系及冲突信息等。
--nodeps:表示忽略依赖关系,当所安装程序依赖的软件包不存在时仍然继续安装。这样可能会导致程序虽然安装成功,但不能成功运行的情况。
--force:强制安装软件包。
--relocate:把允许修改安装路径的程序包的安装路径定位到新路径下。很多程序包是不允许修改安装路径的哦。
2,卸载
语法:rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
卸载软件包只需要指定安装过的rpm包的报名即可。个人觉得卸载常用的选项主要有两个:
--nodeps:忽略依赖关系,即当正在卸载的软件被其它软件依赖时,忽略依赖关系,继续执行卸载行为。
--test:测试卸载,不执行真正的卸载过程。
3,升级
跟升级相关的选项有两个-F和-U,这两个选项有所不同。
rpm{-F|--freshen} [install-options] PACKAGE_FILE ...表示如果要升级的程序不存在old的版本,则不执行安装过程,存在old版,则执行升级安装的过程。
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...表示如果要升级的安装包已经安装过,就升级,没有安装过,就继续执行安装过程。
使用-F还是-U要根据我们的需要来选择哦。
4,查询
个人觉得挺重要的一个功能。
语法rpm {-q|--query} [select-options] [query-options]
rpm -q PACKAGE_NAME:显示已经安装过的程序包的信息。
rpm -qa:显示该系统上已经安装过的所有程序包。当然我们可以同过管道命令执行其它的操作哦。
rpm -qf FILE_NAME:查询某文件由哪个包安装生成。
rpm -qi PACKAGE_NAME:查询已安装过的某包的简要说明信息,PACKAGE_NAME指的是appname-VERSION-RELEASE.ARCH.rpm中的appname,而不能是安装包文件的文件名。
rpm -ql PACKAGE_NAME:查询某包生成的文件列表
rpm -qc PACKAGE_NAME:查询某包安装完成后生成的所有配置文件。
rpm -qd PACKAGE_NAME:查询某包安装完成后生成的所有帮助文件。
rpm -q --changelog :查看某包制作时随版本变化的changelog信息,了解该程序包的前世今生,很有用的哦。
rpm -q --provides PACKAGE_NAME:查询某包提供的capabilities。
rpm -q --requires PACKAGE_NAME:查询某包所依赖的capabilities。
5,校验
常见用法:rpm -V PACKAGE_NAME,查询程序包安装完成后,是否被修改过,包括配置文件。