理论篇---Linux 安装及管理程序(应用程序基础-RPM安装、升级、卸载-源代码编译安装)

一、Linux应用程序基础

1.1 应用程序与系统命令的关系

角色 系统命令 应用程序
文件位置 一般在/bin和/sbin目录中,或为Shell内部指令 通常在usr/bin和/usr/sbin目录中
主要用途 完成对系统的基本管理工作,如IP配置工具(ipconfig) 完成相对独立的其他辅助任务,例如网页浏览器
适用环境 一般只在字符操作界面中运行 根据实际需要,有些程序可以在图形界面中运行
运行格式 一般包括命令字、命令选项和命令参数 通常没有固定的执行格式
  • 应用程序命令的执行文件大多比较小,通常放置在/bin 和/sbin 目录中。对于内部命令,常集成在 Bash 程序内,而不是独立地执行文件;命令文件一般在安装操作系统时一起安装,用于辅助操作系统本身的管理;命令行大多适用于“命令字 选项 参数”形式的一般格式;命令只在字符操作界面中运行。
  • 应用程序的执行文件通常放在/usr/bin、/usr/sbin 和/usr/local/bin、/usr/local/sbin 等目录中;应用程序一般需要在操作系统之外另行安装,提供相对独立于操作系统的功能,有时候等同于“软件”的概念;应用程序一般没有固定的执行格式,运行方式由程序开发者自行定义;应用程序可能会用到图形界面,形式多样;有些应用程序提供的执行文件,能够使用像 Linux 命令一样的运行格式,所以也经常被称为程序命令。

1.2 典型应用程序的目录结构

文件类型 保存目录
普通执行程序文件 /usr/bin(管理员和其他用户都可以使用)
服务器执行程序文件和管理程序文件 /usr/sbin(仅管理员使用)
应用程序配置文件 /etc(应用程序配置文件默认路径)
加粗样式 /var/log(可变长文件存放位置)
应用程序文档文件 /usr/share/doc(一般都是一些说明文档在此)
应用程序手册页文件 /usr/local/share/man(man手册可以查看命令帮助信息和程序帮助信息)
  • /usr/bin和/usr/sbin是软链接关系
  • yum和rpm安装的配置文件在/etc目录下

1.3 常见的软件包封装类型

文件类型 保存目录
RPM软件包 一键安装,扩展名为“.rpm”只能在使用RPM(RPM Package Manager,RPM软件包管理器)机制的Linux操作系统中安装,如RHEL,Fedora,CentOS等。
DEB软件 扩展名为“.deb” 。只能在使用DPKG(Debian Package,Debian包管理器)机制的Linux操作系统中进行安装,如Debian,Ubuntu等。
源代码软件包 一般为“.tar.gz”,“.tar.bz2”等格式的压缩包,这种软件包是程序员开发完成的原始代码,因多数使用tar命令打包而成,所以经常被称为“TarBall”。安装源码软件包需要使用相应的编译工具,如Linux中的C语言编译器gcc。
绿色免安装的软件包 软件包的扩展名不一,以Tarball格式的居多。在压缩包内提供已编译好的执行程序文件。解开压缩包后的文件即可直接使用。免安装,硬盘版,直接用

二、查询RPM软件包信息

2.1 RPM包管理工具

  • Red-Hat Package Manager
    • 由Red Hat公司提出,被众多Linux发行版所采用
    • 建立统一的数据库文件
    • 详细记录软件包安装、卸载等变化信息
    • 自动分析软件包依赖关系
  • RPM软件包
    • 软件素材参考:http://www.rpm.org
    • 一般命名格式:
      在这里插入图片描述
      32位 最大内存只能识别4G
      64位 最大识别2T

2.2 rpm命令的格式

  • rpm命令能够实现几乎所有对RPM软件包的管理功能
  • 执行“man rpm”命令可以获得关于rpm命令的详细帮助信息
  • rpm命令功能
    • 查询、验证RPM软件包的相关信息
    • 安装、升级、卸载RPM软件包
    • 维护RPM数据库信息等综合管理操作

2.3 查询RPM软件包信息

查询已安装的RPM软件包信息

rpm -q[子选项] [软件名]

常用选项有以下几种

-qa 查看系统中以RPM方式安装的所有软件列表
-qi 查看指定软件包的详细信息(名称,版本,许可协议,用途等描述信息)(-info)
-ql 软件包当中的所有文件,显示指定的软件包在当前系统中安装的所有目录,文件列表(-list)
-qf 根据指定文件或目录查看是属于哪个软件包安装的(-file)
-qc 查看软件包所有配置文件。如conf cnf ini 都是配置文件
-qd 查看软件包的文档

查询未安装的RPM软件包文件中信息

rpm -qp[子选项] RPM包文件

常用选项有以下几种
-qpi 查看指定软件包的名称、版本、许可协议、用途描述等详细信息
-qpl 查看该软件包准备要安装的所有目标目录、文件列表
-qpc
-qpd

三、安装,升级,卸载RPM软件包

安装或升级RPM软件

rpm [选项] RPM包文件

常用选项
-i 在当前系统中安装(Install)一个新的 RPM 软件包
-U 检查并升级系统中的某个软件包,若该软件包原来并未安装,则等同于“-i”选项
-F 检查并更新系统中的某个软件包,若该软件包原来并未安装,则放弃安装

卸载指定的RPM软件

rpm -e 软件名

辅助选项

–force 强制安装某个软件包,当需要替换已安装的软件包及文件,或者安装一个比当前使用的软件版本更旧的软件时,可以使用此选项
–nodeps 在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系
-h 在安装或升级软件包的过程中,以“#”号显示安装进度
-v 显示软件安装过程中的详细信息

维护RPM数据库

重建RPM数据库

root@localhost~]#rpm --rebuilddb
或者
[root@localhost~]#rpm --initdb

  • db的意思是数据库(database)
    init的意思是初始化

导入验证公钥

[root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-7

解决软件包依赖关系方法

  • 安装有依赖关系的多个软件时
    • 被依赖的软件包需要先安装
    • 可同时指定多个 .rpm 包文件进行安装
  • 卸载有依赖关系的多个文件时
    • 依赖其他程序的软件包需要先卸载
    • 可同时指定多个软件名进行卸载
  • 忽略依赖关系
    • 结合“–nodeps” 选项,但可能导致软件异常

四、源代码编译安装

4.1 源代码编译安装概述

使用源代码安装软件的优点

  • 获得最新的软件版本,及时修复bug
  • 根据用户需要,灵活定制软件功能

应用场合举例

  • 安装较新版本的应用程序时:
    • 大多数的Linux发行版都提供了相当丰富的应用程序,而这些应用程序的版本往往滞后于该软件的最新源代码版本,所以下载应用程序的最新源代码包并编译安装,可以在程序功能,安全补丁等方面得到及时更新。
  • 当前安装的程序无法满足应用需求时
    • 对于RPM格式封装的应用程序,一般只包含了该软件所能实现的一小部分功能,而难以由用户自行修改,定制。通过对程序的源代码进行编译安装后,可以定制更灵活,更丰富的功能。许多Linux服务器程序都采用源代码编译的方式进行安装,以获得更适合于企业实际应用需求的服务。
  • 为应用添加新的功能时
    • 当需要利用现有的程序源代码进行适当的修改,以便增加新的功能时,必须释放出该软件的源代码,修改后再重新编译安装。
      Tarball封包
  • tar.gz和tar.bz2格式居多
  • 软件素材参考:http://sourceforge.net

确认源代码编译环境

  • 编译源代码需要有相应 的开发环境,对于自由软件来说,gcc和make是最佳的编译工具。Linux系统采用默认安装后没有安装gcc,我们可以使用rpm命令来安装gcc。所需的软件包在镜像文件中就有提供。
yum -y install gcc gcc-c++ 

4.2 编译安装的基本过程

获得所需安装的软件源代码以后,安装的基本过程包括解包,配置,编译及安装。大多数开源软件的安装都遵循这个过程。
在这里插入图片描述
下面依次介绍 Apache 的基本安装过程、使用方法。

步骤一:tar解包

  • 开源软件的源代码包一般为 TarBall 形式,扩展名为“.tar.gz”或“.tar.bz2”,都可以使用 tar 命令进行解压释放。对于只有“.gz”扩展名的源代码包,表示只经过压缩而并未使用 tar 归档, 这样的文件只需使用 gzip 进行解压缩即可。
  • 在 Linux 操作系统中,通常将各种软件的源代码目录保存到“/usr/src/”目录中,以便于集中管理。释放后的软件包目录一般包括软件名和版本信息(如 httpd-2.4.25)。解包前先安装编译环境和依赖包。
  • 习惯上将软件包解压到/sur/src/目录中
    解包后源代码文件位置:/usr/src/软件名-版本号/
以下操作将把 httpd-2.4.25.tar.gz 文件解包到/usr/src/目录中。
[root@localhost Packages]# cd
[root@localhost ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src/
[root@localhost ~]# ls /usr/src/
debug httpd-2.4.25 kernels

步骤二:./configure配置

  • 在编译应用程序之前,需要进入源代码目录,通过目录下的脚本检查安装环境,并且对 软件的安装目录、功能选择等参数进行预先配置。
  • 环境检查与配置工作通常由源代码目录中的 configure 脚本文件来完成,可用的各种配置参数可以通过在源代码目录中执行“./configure --help”命令进行查看。
  • 对不同的软件程序来说,其配置参数存在区别,但是有一个“–prefix”形式的参数却是大多数开源软件通用的, 该配置参数用于指定软件包安装的目标文件夹。如果没有指定任何配置参数,“configure”脚本将采用软件默认的值进行配置。
以下操作将对 Apache 软件的安装参数进行配置
[root@localhost ~]# cd /usr/src/httpd-2.4.25/
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/apache
…… //省略内容
  • 在 Linux 操作系统中通过源代码方式安装软件时,也可以将所有程序文件安装到同一个文件夹(如./configure --prefix=/usr/local/Apache)中,这样当需要卸载软件时,只要直接将该文件夹删除即可,非常方便(某些软件也可以在源代码目录中执行“make uninstall”命令完成卸载)。
  • 如果软件的功能比较复杂,配置过程会需要一定的时间,期间会在屏幕中显示大量的输出信息,这些信息可以帮助管理员了解程序配置的过程。配置结果将保存到源代码目录的Makefile 文件中。
  • 如果配置过程出现错误,如包含“error”、“failed”或“not found”等关键字, 通常是缺少相关的依赖软件包所致,此时只要根据提示安装对应的软件即可。

步骤三:make编译

  • 编译的过程主要是根据 Makefile 文件内的配置信息(若上一步的配置操作失败,将无法进行编译),将源代码文件进行编译生成二进制的程序模块、动态链接库、可执行文件等。
  • 配置完成后,只要在源代码目录中执行“make”命令即可执行编译操作。编译的过程比配置过程需要更长的时间,期间同样会显示大量的执行过程信息。
[root@localhost httpd-2.4.25]# make
…… //省略内容

步骤四:make install 安装

  • 编译完成以后,就可以执行如下的“make install”命令将软件的执行程序、配置文件、帮助文档等相关文件复制到 Linux 操作系统中了,即应用程序的最后“安装”过程。
  • 安装过程需要的时间相对要短一些,期间也会显示安装的过程信息。
[root@localhost httpd-2.4.25]# make install
…… //省略内容
  • 有时为了简便,可将上述的编译、安装步骤写成一行命令执行,中间用“&&”符号分隔。 例如,“make && make install”(表示“make”命令执行成功以后再执行“make install”命令,否则将忽略“make install”命令)。

使用

安装后使用时需要先调整配置文件,操作如下:

[root@localhost httpd-2.4.25]# vim /usr/local/apache/conf/httpd.conf

然后修改配置文件 httpd.conf 的第 194 行,将前面的‘#’去掉,如图 3.2 所示,保存并退出。最后启动 Apache,操作如下:

[root@localhost httpd-2.4.25]# /usr/local/apache/bin/apachectl start

在这里插入图片描述
安装 lynx 网页浏览器,并在命令行下运行 lynx 127.0.0.1 查看本机 Apache 运行状态, 如看到如图 3.3 所示的“It works!”字样表明 Apache 已经工作正常了。具体操作如下:

[root@localhost httpd-2.4.25]# cd /media/cdrom/Packages/
[root@localhost Packages]# rpm -ivh lynx-2.8.8-0.3.dev15.el7.x86_64.rpm
准备中...	################################# [100%]
正在升级/安装...
1:lynx-2.8.8-0.3.dev15.el7	################################# [100%]
[root@localhost Packages]# lynx 127.0.0.1

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ycycyyc_/article/details/107021093