Linux软件包管理大全




1-Linux中 可用/安装 的软件类型

Windows中所有软件包都不能直接在Linux上直接运行。因为这样的性质,Windows上的木马和病毒对于Linux来说都是不可识别的,从而使Linux更加安全。但这也导致所有的软件需要针对Linux进行专门的开发。

Linux中可识别的软件包主要分为两类:

  1. 源码包。这里的源码绝大多数是由C语言写的,但由于直接使用C用于源码进行安装的话速度较慢且容易出错,所以现在我们基本不使用源码包进行安装。

  2. 二进制包(系统默认包)。顾名思义,就是机器码(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安装位置与源码包安装位置不同,所以我们可以使用不同的包安装方式安装相同的软件(虽然实际上我们并不会这么做)。

:在使用源码包进行安装时,可能会出现包错的情况。报错存在多种情况,但只有它满足两个条件时我们才需要对其进行解决。

  1. 安装过程停止了;
  2. 紧接着出现了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下软件的安装方式。

脚本安装包一般都是企业写好的,个人脚本安装包几乎不存在。


  1. 目录中的“INSTALL”文件中含有各种软件安装信息。 ↩︎

发布了10 篇原创文章 · 获赞 13 · 访问量 420

猜你喜欢

转载自blog.csdn.net/hufuzhi1146231094/article/details/105572185