Linux软件包安装及管理

一、软件包分类

1、源码包

  源码包能直接看到源码,需要我们去软件官网进行下载,通常为了方便发布,会将源码包做打包压缩处理(常用的打包压缩格式为"tar.gz"),其中一般包含多个文件(源代码文件、配置和检测程序、软件安装说明和软件说明)。
优点:
  ① 开源,如果有足够的能力,可以直接修改源代码;
  ② 安装时可以根据自己的需求选择相应的功能,所以更加适合自己的系统,并且更加稳定、高效;
  ③ 卸载方便,直接删除安装软件的目录即可。
缺点:
  ① 安装步骤较多,尤其安装较大的软件集合时,容易出现错误;
  ② 因为是编译安装,安装过程中一旦报错新手很难解决;
  ③ 编译时间比较长。

2、二进制包

  二进制包就是源码包经过成功编译之后产生的包,是Linux下默认的软件安装包。
优点:
  ① 包管理系统简单,只需要几个命令就可以实现包的安装,升级,查询和卸载;
  ② 安装速度比源码包快很多;
  ③ 安装过程中报错几率很小。
缺点:
  ① 已经经过编译,看不到源代码;
  ② 功能选择不如源码包灵活;
  ③ 安装过程中有很多依赖包,依赖性不好解决。

二、安装方式

1、YUM安装

  ① YUM简介

  yum(Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

  ② YUM命令

  • 命令解释

  yum - Yellowdog Updater Modified(Shell前端软件包管理器)

  • 命令语法

  yum [options] [command] [package …]

  其中,[options]为可选项,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等;[command]为所要进行的操作;[package]是操作的对象。

  • 常用的yum命令
  Ⅰ、显示和查找
命 令 作 用
yum repolist [all / enabled / disabled] 显示配置的仓库 [全部 / 可用 / 不可用]
yum list [all] 显示所有软件包
yum list | grep 包名 查找指定的软件包
yum list installed 显示已安装的所有软件包
yum list available 显示可安装的软件包
yum list updates 显示已更新的软件包
yum list recent 显示最近增加的软件包
yum search 关键词 以指定的关键词对软件包进行模糊查询
yum info 包名 显示指定软件包信息
yum provides 包名 列出软件包中的文件
  Ⅱ、安装
命 令 作 用
yum install 包名 安装指定软件包(过程中需要确认)
yum install 包名 -y 安装指定软件包(无需确认)
  Ⅲ、更新
命 令 作 用
yum update 包名 更新指定软件包
yum check-update 检查可更新的程序
  Ⅳ、卸载
命 令 作 用
yum remove 包名 卸载已安装的软件包
  Ⅴ、创建和清理缓存
命 令 作 用
yum makechche 构建缓存
yum clean all 清除缓存

  ③ 配置yum源

  yum管理是从指定的服务器下载资源,而下载资源的这个地方就叫做yum源。使用yum安装软件时至少需要一个yum源,这个yum源既可以是网络源,也可以是本地源。接下来为大家演示两种yum源的搭建方式。

  Ⅰ、网络yum源搭建(以阿里云源为例)
[root@localhost ~]# yum install wget    //安装wget(一个从网络上自动下载文件的自由工具)

[root@localhost /]# cd /etc/yum.repos.d/    //备份/etc/yum/repos.d/CentOS-Base.repo文件
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.backup

[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo    //下载新的CentOS-Base.repo到/etc/yum.repos.d(以CentOS-7.repo为例)
--2020-03-17 09:31:20--  http://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 111.19.177.243, 111.19.210.115, 111.19.177.248, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|111.19.177.243|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2523 (2.5K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/CentOS-Base.repo”

100%[======================================>] 2,523       --.-K/s 用时 0s

2020-03-17 09:31:20 (10.5 MB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])


[root@localhost yum.repos.d]# yum clean all    //清理缓存
已加载插件:fastestmirror
正在清理软件源: base extras updates
Cleaning up list of fastest mirrors

[root@localhost yum.repos.d]# yum makecache    //构建缓存
已加载插件:fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                     | 3.6 kB     00:00
extras                                                   | 2.9 kB     00:00
updates                                                  | 2.9 kB     00:00
(1/10): base/7/x86_64/group_gz                             | 165 kB   00:00
(2/10): base/7/x86_64/filelists_db                         | 7.3 MB   00:02
(3/10): base/7/x86_64/other_db                             | 2.6 MB   00:00
(4/10): extras/7/x86_64/filelists_db                       | 216 kB   00:00
(5/10): extras/7/x86_64/other_db                           | 106 kB   00:00
(6/10): base/7/x86_64/primary_db                           | 6.0 MB   00:03
(7/10): updates/7/x86_64/filelists_db                      | 4.0 MB   00:01
(8/10): updates/7/x86_64/other_db                          | 493 kB   00:01
(9/10): updates/7/x86_64/primary_db                        | 6.7 MB   00:02
(10/10): extras/7/x86_64/primary_db                        | 164 kB   00:04
元数据缓存已建立
  Ⅱ、本地yum源搭建

  在没有网络的情况下,yum可以使用本地光盘(映像文件)作为yum源,Linux系统安装映像文件中就含有几乎所有常用的 RPM 包,因此足以满足我们的需求。

[root@localhost ~]# mount /dev/sr0 /media/    //挂载光盘
mount: /dev/sr0 写保护,将以只读方式挂载

[root@localhost ~]# cd /etc/yum.repos.d/    //备份yum源配置文件
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv Cen* backup/

[root@localhost yum.repos.d]# cp backup/CentOS-Media.repo CentOS-Media.repo    //我们以CentOS-Media.repo为模板进行修改(此文件就是以本地光盘作为 yum源的模板文件,只需进行简单的修改即可)
[root@localhost yum.repos.d]# vim CentOS-Media.repo
[CentOS]    //软件源的名字,不能为空
name=CentOS-Media    //软件源的描述
baseurl=file:///media/    //指定服务器地址,因为是本地文件所以使用file,在这里一定要注意是三个"/",其中前两个是标准格式,第三个是目录路径。
gpgcheck=0    //表示下载软件包时是否检查签名,0表示不检查,1表示检查
enabled=1    //表示是否启用这个软件源,0表示不启用,1表示启用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7    //开启gpgcheck后通过gpgkey来指定相应的签名认证信息路径

[root@localhost yum.repos.d]# yum clean all    //清理缓存
已加载插件:fastestmirror
正在清理软件源: CentOS
Cleaning up list of fastest mirrors
Other repos take up 79 M of disk space (use --verbose for details)

[root@localhost yum.repos.d]# yum makecache    //构建缓存
已加载插件:fastestmirror
Determining fastest mirrors
CentOS                                                   | 3.6 kB     00:00
(1/4): CentOS/group_gz                                     | 166 kB   00:00
(2/4): CentOS/filelists_db                                 | 3.2 MB   00:00
(3/4): CentOS/primary_db                                   | 3.1 MB   00:00
(4/4): CentOS/other_db                                     | 1.3 MB   00:00
元数据缓存已建立

2、RPM安装

  ① RPM简介

  rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。yum可以自动判断依赖,一次性安装多个rpm软件包,但原理和一个个地安装rpm软件包没有本质区别。

  ② RPM包在哪里?

[root@localhost ~]# mount /dev/sr0 /media/   //首先需要挂载光盘
mount: /dev/sr0 写保护,将以只读方式挂载

[root@localhost ~]# cd /media/    //进入挂载点
[root@localhost media]# ll    //Package这个目录里就是自带编译好的rpm程序包
总用量 686
-rw-rw-r--. 1 root root     14 11月 26 2018 CentOS_BuildTag
drwxr-xr-x. 3 root root   2048 11月 26 2018 EFI
-rw-rw-r--. 1 root root    227 8月  30 2017 EULA
-rw-rw-r--. 1 root root  18009 12月 10 2015 GPL
drwxr-xr-x. 3 root root   2048 11月 26 2018 images
drwxr-xr-x. 2 root root   2048 11月 26 2018 isolinux
drwxr-xr-x. 2 root root   2048 11月 26 2018 LiveOS
`drwxrwxr-x. 2 root root 663552 11月 26 2018 Packages`
drwxrwxr-x. 2 root root   4096 11月 26 2018 repodata
-rw-rw-r--. 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root   2883 11月 26 2018 TRANS.TBL
[root@localhost media]# cd Packages/    //进入Package目录
[root@localhost Packages]# ls    //rpm包命名原则:软件包名-版本号-发布次数-适用系统-适用的CPU架构平台_支持系统位数.包扩展名(rpm)
...
zenity-3.28.1-1.el7.x86_64.rpm
zip-3.0-11.el7.x86_64.rpm
zlib-1.2.7-18.el7.x86_64.rpm
zlib-devel-1.2.7-18.el7.x86_64.rpm
zsh-5.0.2-31.el7.x86_64.rpm
zziplib-0.13.62-9.el7.x86_64.rpm
...

  ③ RPM命令

  • 命令解释

  rpm - RPM Package Manager(RPM软件包管理器)

  • 命令语法

  rpm [选项]… [完整包名]

  • 常用的rpm命令
  Ⅰ、安装

  rpm -ivh 完整软件包名

选 项 作 用
-i 安装( install)
-v 显示详细信息(verbose)
-h 显示进度条(hash),每个#代表%2的进度
--force 强制安装
--nodeps 忽略依赖
  Ⅱ、升级

  rpm -Uvh 完整软件包名     如果该软件没安装过则直接安装;若没安装则升级至最新版本
  rpm -Fvh 完整软件包名     如果该软件没有安装,则不会安装,必须安装有较低版本才能升级

选 项 作 用
-U 升级或安装
-F 升级
  Ⅲ、卸载

  RPM 软件包的卸载要考虑包之间的依赖性,先安装的后卸载,后安装的先卸载。
  rpm -e 软件包名

选 项 作 用
-e 卸载( erase)
  Ⅳ、查询

  rpm -q 软件包名         查询软件包是否安装
  rpm -qa           查询所有已安装的软件包
  rpm -qi           查询软件包相关信息
  rpm -qf 文件名        查询系统文件属于哪个RPM包
  rpm -qR 软件包名       查询软件包的依赖性

选 项 作 用
-q 查询(query)
-a 所有(all)
-i 软件包相关信息(information)
-f 系统文件所属的软件包(file)
-R 软件包的依赖性(rely)
  Ⅳ、校验

  rpm -V 已安装的软件包名

选 项 作 用
-V 校验指定rpm包中的文件(verify)

  执行后无任何提示信息,表明软件包安装的文件均未改动过。

3、源码安装

  ① 安装

  Ⅰ、下载源码包

  下载指定软件的源码包(后缀名为"tar.gz"或"tar.bz2")至"/usr/local/src"目录下(推荐大家去官方网站去下载)。

  Ⅱ、解压源码包
[root@localhost src]# tar -zxvf 软件包全名    //解压后缀名为tar.gz的源码包
[root@localhost src]# tar -jxvf 软件包全名    //解压后缀名为tar.bz2的源码包
  Ⅲ、切换到源码目录(解压后的目录)下,执行后续操作

  我们可以查看INSTALL文件,里面写着一些安装说明。一般来说源码安装需要三步:配置(configure)→编译(make)→安装(make install)

  a、配置 # ./configure

  可以跟以下参数:

参 数 作 用
--prefix=安装路径 指定安装路径
--enable-FEATURE 启用某项功能
--disable-FEATURE 禁用某项功能
--with-package=包所在的路径 与其他软件关联

  配置操作主要是定义需要的功能选项检测系统环境是否符合安装要求(例如,是否有gcc编译器,是否满足依赖需求等)、把系统环境的检测结果和定义好的功能选项写入 Makefile 文件(后续的编译和安装需要依赖这个文件的内容)。

  b、编译 # make

  make 会调用 gcc 编译器,并读取 Makefile 文件中的信息进行系统软件编译。

  c、安装 # make install

  根据Makefile定义的文件路径进行安装,整个过程不报错,即为安装成功。如果出现"error"或"warning"且安装过程停止,表示安装失败;但是如果仅出现警告信息,但安装过程还在继续,这并不是安装失败!

tips:如果在 “./configure” 或 “make” 两步中出现错误,则在重新执行这两步前必须执行 make clean 命令,它会清空 Makefile 文件或编译产生的 “.o” 头文件。

  ② 卸载

  源码包卸载非常简单便利,只需要直接删除软件的安装目录即可,但删除前记得将软件的服务停止哦!

发布了12 篇原创文章 · 获赞 220 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43898125/article/details/104903507