Linux软件安装——软件包
linux软件安装——软件包
摘要:本文主要学习了linux下软件安装的相关知识。
软件包
简介
linux下的软件包众多,且几乎都是经gpl授权、免费开源(无偿公开源代码)的。这意味着如果你具备修改软件源代码的能力,只要你愿意,可以随意修改。
gpl,全称general public license,中文名称“通用性公开许可证”,简单理解gpl就是一个保护软件*的一个协议,经gpl协议授权的软件必须开源。
linux下的软件包可细分为两种,分别是源码包和二进制包。
linux源码包
实际上,源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。
我们都知道,计算机只能识别机器语言,也就是二进制语言,所以源码包的安装需要一名“翻译官”将“abcd”翻译成二进制语言,这名“翻译官”通常被称为编译器。“编译”指的是从源代码到直接被计算机(或虚拟机)执行的目标代码的翻译过程,编译器的功能就是把源代码翻译为二进制代码,让计算机识别并运行。
另外,由于源码包的安装需要把源代码编译为二进制代码,因此安装时间较长。
为了解决使用源码包安装方式的这些问题,linux软件包的安装出现了使用二进制包的安装方式。
linux二进制包
二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快,且安装过程报错几率大大减小。
二进制包是linux下默认的软件安装包,因此二进制包又被称为默认安装软件包。目前主要有以下两大主流的二进制包管理系统:
1)rpm包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多linux发行版都默认使用此机制作为软件安装的管理方式,例如:fedora、centos、suse等。
2)dpkg包管理系统:由debian linux所开发的包管理机制,通过dpkg包,debian linux就可以进行软件包管理,主要应用在debian和ubuntu中。
线上升级
不论dpkg还是rpm,这些机制或多或少都会有软件依赖的问题,每个软件都有对依赖的检查,目前新的linux开发商都有提供这样的线上升级机制,通过这个机制,在安装时只要有网络,就能够取得开发商所提供的任何软件。
在dpkg管理机制上就开发出apt的线上升级机制。
在rpm上则根据开发商的不同,有red hat系统的yum(yellow dog updater, modified),suse系统的you(yast online update)等。
rpm包管理系统
rpm包说明
rpm全名是“redhat package manager”,顾名思义,当初这个软件管理的机制是由red hat这家公司发展出来的。rpm是以一种资料库记录的方式来将你所需要的软件安装到你的linux系统的一套管理机制。
rpm最大的特点就是将你要安装的软件先进行编译,然后打包成为rpm机制的文件,在安装时,rpm会先依照软件里的数据查询相依赖的软件是否满足,如果满足则进行安装,如果不满足则不安装。安装的时候会将该软件的信息写入rpm的数据库中,以便未来的查询、验证与反安装。
在使用rpm进行安装时也会遇到一些问题,软件安装的环境必须与打包时的环境需求一致或相当,并且在安装时需要满足某些软件的依赖,而且在卸载时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题。
为了解决不同厂商提供的软件不能在其他linux版本上安装运行的问题,在安装软件时可以使用srpm这个东西。
srpm包说明
srpm是source rpm的意思,也就是这个rpm文件里面含有原始码,这个srpm所提供的软件内容并没有经过编译。
通常srpm的扩展名是以“***.src.rpm”这种格式来命名的。虽然srpm的内容是原始码,但是仍然含有该软件所需要的相关软件依赖、以及所有rpm文件所提供的数据。同时,与rpm不同的是,srpm也提供了参数配置档。所以,如果我们下载的是srpm,那么要安装该软件时,你就必须要:
1)先将该软件以rpm管理的方式编译,此时srpm会被编译成为rpm文件。
2)然后将编译完成的rpm文件安装到linux系统中。
通常一个软件在发布的时候,都会同时发布该软件的rpm与srpm。rpm文件必须要在相同的linux环境下才能够安装,可以通过修改srpm内的参数配置,然后重新编译产生能适合linux环境的rpm文件,如此一来,就可以将该软件安装到新系统中。
命名规范
通过文件名可以知道这个软件的版本、适用的平台、编译释出的次数。例如rp-pppoe-3.11-5.el7.x86_64.rpm这的档案的意义为:
1)rp-pppoe:软件名称。
2)3.11:软体的版本资讯。
3)5:释出的次数。
4).el7.x86_64:适合的硬体平台。
5).rpm:文件类型名。
默认安装路径
通常情况下,rpm包采用系统默认的安装路径,所有安装文件会按照类别分散安装到如下目录:
1 /etc/:配置文件安装目录。 2 /usr/bin/:可执行的命令安装目录。 3 /usr/lib/:程序所使用的函数库保存位置。 4 /usr/share/doc/:基本的软件使用手册保存位置。 5 /usr/share/man/:帮助文件保存位置。
rpm包的默认安装路径是可以通过命令查询的。
除此之外,rpm包也支持手动指定安装路径,但此方式并不推荐。因为一旦手动指定安装路径,所有的安装文件会集中安装到指定位置,且系统中用来查询安装路径的命令也无法使用(需要进行手工配置才能被系统识别),得不偿失。
与rpm包不同,srpm源码包的安装通常采用手动指定安装路径(习惯安装到/usr/local/中)的方式。既然安装路径不同,同一apache程序的源码包和rpm包就可以安装到一台linux服务器上(但同一时间只能开启一个,因为它们需要占用同一个80端口)。
实际情况中,一台服务器几乎不会同时包含两个apache程序,管理员不好管理,还会占用过多的服务器磁盘空间。
yum包管理系统
说明
yum的全称是“yellow dog updater, modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器,是改进型的rpm软件管理器,它很好的解决了rpm所面临的软件包依赖问题。
yum在服务器端存有所有的rpm包,并将各个包之间的依赖关系记录在文件中,当管理员使用yum安装rpm包时,yum会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的rpm包并进行安装。
源
使用yum安装软件包之前,需指定好yum下载rpm包的位置,此位置称为yum源。换句话说,yum源指的就是软件安装包的来源。
使用yum安装软件时至少需要一个yum源。yum源既可以使用网络yum源,也可以将本地光盘作为yum源。
1)网络yum源
一般情况下,只要你的主机网络正常,可以直接使用网络yum源,不需要对配置文件做任何修改。
网络yum源配置文件位于/etc/yum.repos.d/目录下,只要扩展名为“*.repo”的文件都是yum源的配置文件,通常情况下centos-base.repo文件生效。
2)本地yum源
在无法联网的情况下,yum可以考虑用本地光盘(或安装映像文件)作为yum源。
linux系统安装映像文件中就含有常用的rpm包,我们可以使用压缩文件打开映像文件(iso文件),进入其packages子目录,该子目录下含有几乎所有常用的rpm包,因此使用系统安装映像作为本地yum源没有任何问题。
在/etc/yum.repos.d/目录下有一个centos-media.repo文件,此文件就是以本地光盘作为yum源的模板文件,只需进行简单的修改即可。