目录
1-Linux中 可用/安装 的软件类型
Windows中所有软件包都不能直接在Linux上直接运行。因为这样的性质,Windows上的木马和病毒对于Linux来说都是不可识别的,从而使Linux更加安全。但这也导致所有的软件需要针对Linux进行专门的开发。
Linux中可识别的软件包主要分为两类:
-
源码包。这里的源码绝大多数是由C语言写的,但由于直接使用C用于源码进行安装的话速度较慢且容易出错,所以现在我们基本不使用源码包进行安装。
-
二进制包(系统默认包)。顾名思义,就是机器码(Redhat系列(如centos)中源代码编译后的二进制包是RMP格式;ubantu等系列使用的则是DEB包;Windows中编译好的二进制包是EXE格式。虽然都是二进制包,但不同格式的二进制包之间并不能混用)。因为是二进制包是已经编译好的文件,所以相对于源码包安装来说直接省略了编译步骤,安装软件的速度大大提升。
1.1-源码包
优点:
- 开源,如果有足够的能力,可以修改源代码。
- 可以直邮选择所需的功能。
- 源码包是操作系统自己编译安装的,所以会更加适合使用者操作系统,软件更加稳定,更有执行效率。
- 卸载方便(由于源码包中所有文件都是安装在同一个目录下,所以直接删掉软件所在的目录就相当于删除软件,卸载相当方便)。
缺点:
- 安装过程步骤较多,尤其是安装较大的软件集合时容易出现拼写错误。
- 编译过程花费的时间较长。
- 因为是编译安装,安装过程中一旦报错新手很难解决。
1.2-二进制包
优点:
- 包管理系统简单,只需通过几个命令就可以实现包的安装、升级、查询和卸载。
- 安装速度快。
缺点:
- 进过编译后不可看到源码。
- 功能选择不如源代码灵活。
- 几乎所有二进制包都具有依赖性。
2-RPM包管理
2.1-使用“rpm”命令对RPM包进行管理
包全名:操作的是没有安装的软件包时(如,安装,升级)使用的是包全名,并且要注意包的路径。
包名:操作已安装的软件包时(如,查询,卸载),使用包名。
注:包全名与包名只在rpm命令中有效。
安装/升级 软件包
语法格式:rpm [选项] 包全名
选项 | 含义 |
---|---|
-i(install) | 安装 |
-v(verbose) | 显示详细信息 |
-h(hash) | 显示进度 |
-U(upgrade) | 升级 |
卸载软件包
语法格式:rpm -e 包名
查询软件包(常用)
语法格式:rpm [选项] 包名
选项 | 含义 |
---|---|
-q(query) | 查询包是否安装 |
-qa | 查询所有安装过的包 |
-qi | 查询软件信息 |
-ql | 查询软件安装位置 |
-qf | 查询系统文件属于哪个软件包(后面跟的不是包名,而是系统文件名) |
-qRp | 查询未安装软件包的依赖 |
RPM包校验
RPM包校验的作用:判断已安装的 RPM包/文件 本身是否被修改
语法格式:rpm -V 包名
RPM包中提取文件
使用“-rpm”命令进行包管理时最大的缺点:软件包的依赖性解决起来比较复杂。所以我们一般使用“-yum”进行管理。
注:Redhat系列的系统使用“-yum”时需要收费(centos除外)。
2.2-使用“yum”命令对RPM包进行管理
常用的yum命令
命令 | 作用 |
---|---|
yum list | 查询所有可用的软件包列表 |
yum search 关键字 | 搜索服务器上所有与关键字相关的包 |
yum -y install 包名 | 自动安装 |
yum -y update 包名 | 自动升级(如果此命令没有写包名,则系统会升级系统内所有的软件包,包括系统内核,这样的话你的Linux很可能会无法启动) |
yum -y remove 包名 | 自动卸载(此命令会卸载当前包和当前包所依赖的包,如果当前包依赖的包正好也是系统依赖的包,则有可能会造成系统出现相应的问题。所以此命令尽量不要使用) |
本地yum源搭建
在实际的工作使用当中,我们主要考虑的是服务器的安全和软件的稳定性。使用本地yum源后,软件的安装速度会有很大的提升。虽然软件版本不会是最新,但老版本一般都要比新版本的要稳定,这也是为什么要使用本地yum源的原因之一。
3-源码包管理
3.1-源码包与RPM包安装位置的区别
“1”中解释的是两种包之间概念上的区别,这里介绍的是安装后文件位置的区别。
RPM包安装时不需要指定安装位置(安装在系统的默认位置),源码包安装时需要人为指定安装位置(一般路径为“/usr/local/软件名/”)。
大部分RPM包的默认安装路径 | 解释 |
---|---|
/ete/ | 配置文件安装目录 |
/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
安装位置不同所带来的的影响:
RPM包安装的服务可以使用系统服务管理命令(如service)来管理,例如RPM包安装的Apache的启动方式为“/ect/rc.d/init.d/httpd start”或“service httpd start(service命令为Redhat系列专有)”。通过RPM包安装的服务的可执行文件全部都会安装在“/ect/rc.d/init.d/”目录下。
而源码包安装的服务则不能被服务管理命令管理,因为它没有安装到默认的路径中。所以只能使用绝对路径进行服务的管理,即“安装时选择的绝对路径 start”。
3.2-源码包的安装过程
3.2.1-安装编译器
在虚拟机上安装gcc的编译器。因为要把C语言编译为二进制文件,所以编译器是不能少的。(已经安装好的就不需要安装了)
3.2.2-下载源码包
下载源码包(源码包的保存位置为“/usr/local/src/”,通过源码包安装后的软件的安装位置为“/usr/local/”)。因为RPM安装位置与源码包安装位置不同,所以我们可以使用不同的包安装方式安装相同的软件(虽然实际上我们并不会这么做)。
注:在使用源码包进行安装时,可能会出现包错的情况。报错存在多种情况,但只有它满足两个条件时我们才需要对其进行解决。
- 安装过程停止了;
- 紧接着出现了error,warning或no的提示。
3.2.3-传输源码包
(如果你是在Linux上下载的软件包,可以忽略这步)使用远程连接工具把下载好的软件包传输到虚拟机中。
3.2.4-解压源码包
解压下载好的源码包。解压好后在当前目录下会出现一个新的目录。
3.2.5-进入解压缩目录
进入到那个新的目录中1!!!(千万不要忘了这步)。
3.2.6-软件配置与检查
定义安装路径
# ./configure --prefix=/usr/local/自定义软件名
注:正常情况下,此命令执行后当前目录会新增一个名为“Makefile”的文件,此文件会用于后续的安装过程。
3.2.7-编译和编译安装
先编译
# make
再编译安装:
# make install
3.3脚本安装
脚本安装包并不是独立的软件包类型,常见安装的是源码包。
脚本安装包只是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。非常类似于Windows下软件的安装方式。
脚本安装包一般都是企业写好的,个人脚本安装包几乎不存在。
目录中的“INSTALL”文件中含有各种软件安装信息。 ↩︎