一、软件包分类
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 makecache | 构建缓存 |
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” 头文件。
② 卸载
源码包卸载非常简单便利,只需要直接删除软件的安装目录即可,但删除前记得将软件的服务停止哦!