前言
在Linux中的应用程序被视为将软件包安装到系统中后产生的各种文档,其中包括可执行文件、配置文件、用户手册等内容,这些文档被组织为一个有机的整体,为用户提供特定的功能,因此对于“安装软件包”与“安装应用程序”这两种说法,并不做严格的区分
一、应用程序概述
1、命令与程序的关系
在Linux操作系统中,一直以来命令和应用程序并没有特别明确的区别,从长期使用习惯来看可以通过以下描述来对两者进行区别
- 应用程序命令的执行文件大多比较小,通常放置在/bin和/sbin目录中,对于内部命令常集成在Bash程序内,而不是独立地执行文件,命令文件一般在安装操作系统时一起安装,用于辅助操作系统本身的管理,命令行大多适用于“命令字 选项 参数”形式的一般格式,命令只在字符操作界面中运行
- 应用程序的执行文件通常放在/usr/bin、/usr/sbin和/usr/local/bin、/usr/local/sbin中,应用程序一般需要在操作系统之外另行安装,提供相对独立于操作系统的功能,有时候等同于“软件”的概念,应用程序一般没有固定的执行格式,运行方式由程序开发者自行定义,应用程序可能会用到图形界面,形式多样,有些应用程序提供的执行文件,能够使用像Linux命令一样的运行格式,所以也经常被称为程序命令
2、程序的组成
安装完一个软件包以后,可能会向系统中复制大量的数据文件,并进行相关设置,在Linux操作系统中,典型的应用程序通常由以下几部分组成
- 普通的可执行程序文件:一般保存在/usr/bin目录中,普通用户即可执行
- 服务器程序、管理程序文件:一般保存在/usr/sbin目录中,只有管理员能执行
- 配置文件:一般保存在/etc目录中,配置文件较多时会建立相应的子目录
- 日志文件:一般保存在/var/log目录中
- 关于应用程序的参考文档等数据:一般保存在/usr/share/doc/目录中
- 执行文件及配置文件的man手册页:一般保存在/usr/share/man/目录中
3、软件包封装类型
对于各种应用程序的软件包,在封装时可以采用各种不同的类型,不同类型的软件包其安装方法也各不相同,常见的软件包封装类型如下
- RPM软件包:这种软件包文件的扩展名为“.rpm”,只能在使用RPM(RPM Package Manager, RPM软件包管理器)机制的Linux操作系统中安装,如RHEL、Fedora、CentOS等,RPM软件包一般针对特定版本的操作系统量身定制,因此依赖性较强,安装RPM软件包可使用操作系统中的rpm命令
- DEB软件包:这种软件包文件的扩展名为“.deb”,只能在使用DPKG(Debian Package,Debian包管理器)机制的Linux操作系统中进行安装,如Debian、Ubuntu等,安装DEB软件包可使用操作系统中的dpkg命令
- 源代码软件包:这种软件包是程序员开发完成的原始代码,一般被制作成“.tar.gz”或“.tar.bz2”等格式的压缩包文件,因多数使用tar命令打包而成,所以经常被称为“TarBall”,安装源代码软件包需要使用相应的编译工具,如Linux中的C语言编译器gcc,因此,在安装操作系统的时候尽量勾选“开发工具”一项来安装基本的编译环境
- 附带安装程序的软件包:这种软件包的扩展名不一,但仍以TarBall格式的居多,软件包中会提供用于安装的可执行程序或脚本文件,如install、 sh、 setup等,有时候会以“.bin”格式的单个安装文件形式出现,安装时只需运行安装文件就可以根据向导程序的提示完成安装操作
开放源代码的自由软件绝大多数选择以TarBall的形式发布,而RPM软件包、DEB软件包等则使了二进制的文件格式,代码相对比较封闭
二、RPM
1、RPM概述
RPM软件包管理机制最早由Red Hat公司提出,后来随着版本的升级逐渐融入更多的优秀特性,成为众多Linux发行版中公认的软件包管理标准,使用RPM机制封装的软件包文件拥有约定俗成的命名格式,一般使用 “软件名-软件版本-发布次数.操作系统类型.硬件架构类型.rpm” 的文件名形式
2、RPM用法
rpm 选项 rpm -qa 显示系统中以rpm方式安装的所有软件列表 rpm -q 软件包名称 查看某个安装包是否安装 rpm -qi 软件包名称 查看指定软件包详细信息 rpm -ql 软件包名称 显示软件包安装后所在的目录及文件列表 rpm -qf 文件或目录名 查看文件或目录是由哪个软件包安装的 rpm -ivh 软件包名称 以rpm方式安装软件(不推荐,还要装依赖包,推荐使用yum) rpm -qp 查询未安装软件 rpm -e 软件包名称 卸载安装包 rpm -U 软件包名称 升级安装或新安装 rpm -F 软件包名称 升级安装,未安装则不安装 rpm -h 软件包名 显示安装进度 rpm -v 软件包名 显示安装过程详细信息 rpm --force 软件包名 强制安装,旧版本安装 rpm --nosignature 安装时不检查密钥
三、编译安装
以安装httpd为例
1、解包
解压依赖包sj.tar.gz yum install 依赖包内软件包名称 yum install gcc gcc-c++ make pcre-devel expat-devel perl pcre-devel.x86_64 apr-util-devel.x86_64 解压httpd包 tar zxf httpd.tar.gz -C /usr
2、配置
httpd包解压到usr目录下后会有解压后的httpd目录,进入解压后的该目录进行后续配置 cd /usr/httpd ./configure --prefix=/指定安装参数文件位置
3、编译
make
4、安装
make install
5、启用httpd服务
cd /参数安装位置/bin ./apachectl
结语
大多数的Linux发行版都提供了相当丰富的应用程序,而这些程序的版本往往滞后于该软件的最新源代码版本,因为大多数的开源软件总是以源代码的形式最先发布,之后才会逐渐出现.rpm、.deb等二进制封装的版本,下载应用程序的最新源代码包并编译安装,可以在程序功能、安全补丁等方面得到及时更新