Linux学习-16-系统软件安装(RPM包安装、卸载和升级)

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 Linux学习-16-系统软件安装(RPM包安装、卸载和升级),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

7 Linux系统软件安装

  • Linux 和 Windows 是完全不同的操作系统,软件包管理是截然不同的,导致Linux 中的软件安装方法是否和 Windows 中的软件安装方法是不一样的,我们需要学习一种新的软件包管理方法,而且 Linux 软件包的管理要比 Windows 软件包的管理复杂得多;而 Windows 下所有的软件都不能在 Linux 中识别,所以 Windows 中大量的木马和病毒也都无法感染 Linux

7.1 Linux软件包(源码包和二进制包)

  • Linux下的软件包众多,且几乎都是经 GPL 授权、免费开源(无偿公开源代码)的。这意味着如果你具备修改软件源代码的能力,只要你愿意,可以随意修改。
GPL,全称 General Public License,中文名称“通用性公开许可证”,简单理解 GPL 就是一个保护软件自由的一个协议,经 GPL 协议授权的软件必须开源
  • Linux下的软件包可细分为两种,分别是源码包和二进制包。
7.1.1 Linux源码包
  • 源码包:一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。我们都知道,计算机只能识别机器语言,也就是二进制语言,所以源码包的安装需要编译器翻译成二进制语言。

“编译”指的是从源代码到直接被计算机(或虚拟机)执行的目标代码的翻译过程,编译器的功能就是把源代码翻译为二进制代码,让计算机识别并运行,

  • 由于源码包的安装需要把源代码编译为二进制代码,因此安装时间较长。源码包的编译是很费时间的,况且绝多大数用户并不熟悉程序语言,安装有一定难度,为了解决使用源码包安装方式的这些问题,Linux 软件包的安装出现了使用二进制包的安装方式。
7.1.2 Linux二进制包
  • 二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快(同 Windows下安装软件速度相当),且安装过程报错几率大大减小。
  • 二进制包是 Linux 下默认的软件安装包,因此二进制包又被称为默认安装软件包。目前主要有以下 2 大主流的二进制包管理系统:
    • RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。
    • DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。
  • RPM 包管理系统和 DPKG 管理系统的原理和形式大同小异,可以触类旁通。可以自行去 http://www.rpmfind.net 网站上查找相关的 RPM 包
7.1.3 源码包 VS RPM二进制包
  • 源码包一般包含多个文件,为了方便发布,通常会将源码包做打包压缩处理,Linux 中最常用的打包压缩格式为“tar.gz”,因此源码包又被称为 Tarball。

Tarball 是 Linux 系统的一款打包工具,可以对源码包进行打包压缩处理,人们习惯上将最终得到的打包压缩文件称为 Tarball 文件。

  • 源码包需要我们自己去软件官方网站进行下载,包中通常包含以下内容:

    • 源代码文件。
    • 配置和检测程序(如 configure 或 config 等)。
    • 软件安装说明和软件说明(如 INSTALL 或 README)。
  • 总的来说,使用源码包安装软件具有以下几点好处:

    • 开源。如果你有足够的能力,则可以修改源代码。
    • 可以自由选择所需的功能。
    • 因为软件是编译安装的,所以更加适合自己的系统,更加稳定,效率也更高。
    • 卸载方便。
  • 但同时,使用源码包安装软件也有几点不足:

    • 安装过程步骤较多,尤其是在安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误。
    • 编译时间较长,所以安装时间比二进制安装要长。
    • 因为软件是编译安装的,所以在安装过程中一旦报错,新手很难解决。
  • 相比源码包,二进制包是在软件发布时已经进行过编译的软件包,所以安装速度比源码包快得多(和 Windows 下软件安装速度相当)。也正是因为已经进行通译,大家无法看到软件的源代码。

  • 使用 RMP 包安装软件具有以下 2 点好处:

    1. 包管理系统简单,只通过几个命令就可以实现包的安装、升级、査询和卸载。
    2. 安装速度比源码包安装快得多。
  • 与此同时,使用 RMP 包安装软件有如下不足:

    • 经过编译,不能在看到源代码。
    • 功能选择不如源码包灵活。
    • 依赖性。安装软件,需要有一定的顺序,有时依赖性会非常强。
7.1.4 如何选择?
  • 源码包和 RMP 二进制包的对比,在 Linux 进行软件安装时,我们应该使用哪种软件包呢?

  • 用源码包安装软件会更适合自己的系统,效率更高,更加稳定,但安装难度大需要一定的编程能力

  • 虽然软件基本不能自定义功能,但安装简单。

7.2 Linux RPM包统一命名规则

  • RPM 二进制包的命名需遵守统一的命名规则,用户通过名称就可以直接获取这类包的版本、适用平台等信息。RPM 二进制包命名的一般
包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
  • 例如,RPM 包的名称是httpd-2.2.15-15.el6.centos.1.i686.rpm,其中:

    • httped:软件包名。这里需要注意,httped 是包名,而 httpd-2.2.15-15.el6.centos.1.i686.rpm 通常称为包全名,包名和包全名是不同的,在某些 Linux 命令中,**有些命令(如包的安装和升级)使用的是包全名,而有些命令(包的查询和卸载)**使用的是包名,一不小心就会弄错。
    • 2.2.15:包的版本号,版本号的格式通常为主版本号.次版本号.修正号
    • 15:二进制包发布的次数,表示此 RPM 包是第几次编程生成的。
    • el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。
    • centos:表示此包适用于 CentOS 系统。
    • i686:表示此包使用的硬件平台,目前的 RPM 包支持的平台如表 1 所示:
  • 操作硬件平台:由于 RPM 可以适用在不同的操作平台上,但是由于不同的平台设定的参数还是有所差异性!并且,我们可以针对比较高阶的 CPU 来进行最佳化参数的设定,所以就有所谓的 i386, i586, i686 与 noarch 等的文件名称出现了!

  • CPU的等级区分是以型号来的:Intel系列的CPU,奔腾为中低,酷睿为中高,赛扬则为入门级AMD的也是一样的,老款AMD系列闪龙系列为入门级,速龙为中低,羿龙为中高级别。

平台名称 适用平台信息
i386 386 以上的计算机都可以安装。几乎适用于所有的 x86 平台,不论是旧的 pentum 或者是新的 pentum-IV 与 K7 系列的 CPU等等。那个 i 指的是 Intel 兼容的 CPU 的意思。至于 386 不用说,就是 CPU 的等级啦!
i586 686 以上的计算机都可以安装。包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU ( socket 7 插脚 ) 等等的 CPU 都算是这个等级;
i686 奔腾 II 以上的计算机都可以安装,目前所有的 CPU 是奔腾 II 以上的,及 K7 以后等级的 CPU 都属于这个 686 等级!所以这个软件版本居多
x86_64 64 位 CPU 可以安装
noarch 没有硬件限制
  • rpm:RPM 包的扩展名,表明这是编译好的二进制包,可以使用 rpm 命令直接安装。此外,还有以 src.rpm 作为扩展名的 RPM 包,这表明是源代码包,需要安装生成源码,然后对其编译并生成 rpm 格式的包,最后才能使用 rpm 命令进行安装。

  • Linux 系统不靠扩展名分区文件类型,但这里的扩展名是为系统管理员准备的,如果我们不对 RPM 包标注扩展名,管理员很难知道这是一个 RPM 包,当然也就无法正确使用。

7.3 Linux RPM包安装、卸载和升级(rpm命令)

  • RPM包默认安装路径:RPM 包采用系统默认的安装路径,所有安装文件会按照类别分散安装到下表所示的目录中。

    安装路径 含 义
    /etc/ 配置文件安装目录
    /usr/bin/ 可执行的命令安装目录
    /usr/lib/ 程序所使用的函数库保存位置
    /usr/share/doc/ 基本的软件使用手册保存位置
    /usr/share/man/ 帮助文件保存位置
  • RPM 包的默认安装路径是可以通过命令查询的。RPM 包也支持手动指定安装路径,但此方式并不推荐。因为一旦手动指定安装路径,所有的安装文件会集中安装到指定位置,且系统中用来查询安装路径的命令也无法使用(需要进行手工配置才能被系统识别)

  • 与 RPM 包不同,源码包的安装通常采用手动指定安装路径(习惯安装到 /usr/local/ 中)的方式。既然安装路径不同,同一 apache 程序的源码包和 RPM 包就可以安装到一台 Linux 服务器上(但同一时间只能开启一个,因为它们需要占用同一个 80 端口)。

  • 安装 RPM 的命令格式为:注意一定是包全名。涉及到包全名的命令,一定要注意路径,可能软件包在光盘中,因此需提前做好设备的挂载工作,准备好rmp安装包。安装和升级用包全名,卸载用包名

[root@CncLucZK ~]# rpm -ivh 包全名
  • 此命令中各选项参数的含义为:
    • -i:安装(install);
    • -v:显示更详细的信息(verbose);
    • -h:打印 #,显示安装进度(hash);
[root@CncLucZK ~]# rpm -ivh \
/mnt/Packages/httpd-2.2.15-15.el6.centos.1.i686.rpm
Preparing...
####################
[100%]
1:httpd
####################
[100%]

注意,直到出现两个 100% 才是真正的安装成功,第一个 100% 仅表示完成了安装准备工作。

  • 此命令还可以一次性安装多个软件包,仅需将包全名用空格分开即可,如下所示:
[root@CncLucZK ~]# rpm -ivh 1.rpm 2.rpm
  • 如果还有其他安装要求(比如强制安装某软件而不管它是否有依赖性),可以通过以下选项进行调整:

    • -nodeps:不检测依赖性安装。软件安装时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错。如果不管依赖性,想强制安装,则可以使用这个选项。注意,这样不检测依赖性安装的软件基本上是不能使用的,所以不建议这样做。
    • -replacefiles:替换文件安装。如果要安装软件包,但是包中的部分文件已经存在,那么在正常安装时会报”某个文件已经存在”的错误,从而导致软件无法安装。使用这个选项可以忽略这个报错而覆盖安装。
    • -replacepkgs:替换软件包安装。如果软件包已经安装,那么此选项可以把软件包重复安装一遍。
    • -force:强制安装。不管是否已经安装,都重新安装。也就是 -replacefiles 和 -replacepkgs 的综合。
    • -test:测试安装。不会实际安装,只是检测一下依赖性。
    • -prefix:指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。
  • apache 服务安装完成后,可以尝试启动:

    [root@CncLucZK ~]# service 服务名 start|stop|restart|status
    
  • 各参数含义:

    • start:启动服务;
    • stop:停止服务;
    • restart:重启服务;
    • status: 查看服务状态;
[root@CncLucZK ~]# service httpd start #启动apache服务
  • 服务启动后,可以查看端口号 80 是否出现
[root@CncLucZK mnt]# netstat -tlun |grep 80
tcp6       0      0 :::80                   :::*                    LISTEN    
  • 可以在浏览器中输入 Linux 服务器的 IP 地址,访问这个 apache 服务器。目前在 apache 中没有建立任何网页,所以看到的只是测试页
    在这里插入图片描述
  • RPM包的升级:使用如下命令即可实现 RPM 包的升级:
[root@CncLucZK ~]# rpm -Uvh 包全名
  • -U(大写)选项的含义是:如果该软件没安装过则直接安装;若没安装则升级至最新版本。
[root@CncLucZK ~]# rpm -Fvh 包全名
  • -F(大写)选项的含义是:如果该软件没有安装,则不会安装,必须安装有较低版本才能升级。

  • RPM包的卸载:RPM 软件包的卸载要考虑包之间的依赖性。例如,我们先安装的 httpd 软件包,后安装 httpd 的功能模块 mod_ssl 包,那么在卸载时,就必须先卸载 mod_ssl,然后卸载 httpd,否则会报错。

  • 如果卸载 RPM 软件不考虑依赖性,执行卸载命令会包依赖性错误,例如:

[root@CncLucZK ~]# rpm -e httpd
error: Failed dependencies:
httpd-mmn = 20051115 is needed by (installed) mod_wsgi-3.2-1.el6.i686
httpd-mmn = 20051115 is needed by (installed) php-5.3.3-3.el6_2.8.i686
httpd-mmn = 20051115 is needed by (installed) mod_ssl-1:2.2.15-15.el6.
centos.1.i686
httpd-mmn = 20051115 is needed by (installed) mod_perl-2.0.4-10.el6.i686
httpd = 2.2.15-15.el6.centos.1 is needed by (installed) httpd-manual-2.2.
15-15.el6.centos.1 .noarch
httpd is needed by (installed) webalizer-2.21_02-3.3.el6.i686
httpd is needed by (installed) mod_ssl-1:2.2.15-15.el6.centos.1.i686
httpd=0:2.2.15-15.el6.centos.1 is needed by(installed)mod_ssl-1:2.2.15-15.el6.centos.1.i686
  • RPM 软件包的卸载很简单,使用如下命令即可:-e 选项表示卸载,也就是 erase 的首字母。
[root@CncLucZK ~]# rpm -e 包名
  • RPM 软件包的卸载命令支持使用“-nocteps”选项,即可以不检测依赖性直接卸载,但此方式不推荐大家使用,因为此操作很可能导致其他软件也无法征程使用。

参考文献:
Linux RPM包安装、卸载和升级(rpm命令)详解

下一篇:Linux学习-17-rpm查询软件包命令(-q、-qa、-i、-p、-l、-f、-R)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123775.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!