Linux云计算集群架构师->第八章 Centos8 软件包的管理与安装

第八章 Centos8 软件包的管理与安装

 

(上课时间2021-06-24,笔记整理时间2021-06-26)

本节所讲内容:

8.1 使用 rpm 命令-安装-查看-卸载-rpm 软件包

8.2 yum 管理软件包

8.3 CentOS8 中使用 DNF 管理软件包

8.4 实战 tar 源码包管理-源码包安装方法

8.1 软件包的管理

软件包的类型

rpm 二进制包------>>>>已经使用 GCC 编译后的(二进制已经可以被操作系统直接执行了)

tar 源码包----->>>>需要编译(源码包就是你能看懂的,基于字符的,还需要进行编译)

RPM 概述:RPM 是 RPM RedHat Package Manager(RPM 软件包管理器)的缩写,这一文件格式名称虽然打上了 RedHat 的标志,但是其原始设计理念是开放式的,现在包括 OpenLinux、SUSE以及 Turbo Linux 等 Linux 的分发版本都有采用,可以算是公认的行业标准了。

kaili apt install name.deb

8.1.1 rpm 软件包的管理

rpm 包的获取方式:

1、Centos 系统镜像光盘

2、网站 rpmfind.net

3、比如安装 mysql、nginx 软件,我们可以去它的官方网站下载:http://nginx.org/en/download.html

4、Centos yum 源上,也有 rpm 可以手动下载: https://www.centos.org/download/

rpm 包格式的说明

例1:

[root@Centos83 ~]# ls /mnt/BaseOS/Packages/zsh-5.5.1-6.el8_1.2.x86_64.rpm
/mnt/BaseOS/Packages/zsh-5.5.1-6.el8_1.2.x86_64.rpm
zsh -5. 5.  1- 6. el8. x86_64.rpm
软件名 主版本号 次版本号 修订 release( ) 操作系统版本 软件包是 64 位包

release(rpm 自身的发布版本号,表示这个 rpm 软件包是第几次编译生成的,与程序源码的发行号无关)

修订指是的第几次修改 bug。 发布指的是:第几次发布。 发布时,可能只是对软件安装的默认参数做了修改,而没有其它改动,就做了一次编译。

el8 redhat8.x/centos8.x

x86_64:表示软件包是 64 位

.rpm:.rpm 和.src.rpm,是 rpm 包类型后缀,rpm 是编译好的二进制包,.src.rpm 是源码包

devel:表示这个 rpm 包是软件的开发包

noarch:说明这样的软件包可以在任何平台安装和运行,不需要特定的硬件平台

例2:

[root@Centos83 ~]# ls /mnt/BaseOS/Packages/atlas-3.10.3-8.el8.i686.rpm 
/mnt/BaseOS/Packages/atlas-3.10.3-8.el8.i686.rpm

注:.i686 代表,此包是 32 位操作系统包。 64 位操作系统是可以安装 32 位操作系统的包。 32位操作系统,安装不了 64 位的包。 而且在 centso7 开始,就没有 32 位操作系统。

例3:

[root@Centos83 ~]#  ls /mnt/AppStream/Packages/zsh-html-5.5.1-6.el8_1.2.noarch.rpm

注:结尾有 noarch,代表此包在 32 位和 64 位操作系统上都可以运行。 这类型包,里面通常是文本文件,如: shell 脚本,html,txt 等。

[root@Centos83 ~]# uname -r     #查看内核版本。
4.18.0-240.el8.x86_64 #我的内核版本是 4.18.0-240.el8,有 x86_64 就是 64 位操作系统

8.1.2 安装 rpm 软件

RPM 工具使用分为安装、查询、验证、更新、删除等操作

命令格式:rpm [参数] 软件包

参数:

-i 是 install 的意思, 安装软件包

-v 显示附加信息,提供更多详细信息

-V 校验,对已经安装的软件进行校验

-h --hash 安装时输出####标记

准备中... ################################# [100%]

互动:rpm 使用时,什么情况下使用软件包全名,什么时候使用软件包名?

全名:在安装和更新升级时候使用

包名:对已经安装过的软件包进行操作时,比如查找已经安装的某个包,卸载包等 ,使用包名。它默认是去目录/var/lib/rpm 下面进行搜索。 当一个 rpm 包安装到系统上之后,安装信息通常会保存在本地的 /var/lib/rpm/目录下。

从本地安装

[root@Centos83 ~]# rpm -ivh /mnt/BaseOS/Packages/lrzsz-0.12.20-43.el8.x86_64.rpm
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
  1:lrzsz-0.12.20-43.el8             ################################# [100%]

#本地安装 lrzsz 包,安装后可以使用 rz 和 sz 命令。

8.1.3 rpm 查询功能

用法:rpm -q(query) 常与下面参数组合使用

-a(all) 查询所有已安装的软件包

-f(file)系统文件名(查询系统文件所属哪个软件包),反向查询

-i 显示已经安装的 rpm 软件包信息,后面直接跟包名

-l(list) 查询软件包中文件安装的位置

-p 查询未安装软件包的相关信息,后面要跟软件的命名

-R 查询软件包的依赖性

[root@Centos83 ~]# rpm -q lrzsz             # 查询指定的包是否安装
lrzsz-0.12.20-43.el8.x86_64
[root@Centos83 ~]# rpm -qa # 查询所有已安装包

查看 passwd 文件中包括 bash 的行。

[root@Centos83 ~]# grep bash /etc/passwd    # 查看 passwd 文件中包括 bash 的行
root:x:0:0:root:/root:/bin/bash
yh:x:1000:1000:yh:/home/yh:/bin/bash
ftpuser:x:2001:2001::/opt/ftp:/bin/bash
lenovo:x:0:2002:hell Linux:/home/lenovo:/bin/bash
think:x:2003:2003::/opt/think:/bin/bash
thinkplus:x:2004:2004::/home/thinkplus:/bin/bash
plume:x:2005:2005::/home/plume:/bin/bash
user:x:2006:2006::/home/user:/bin/bash
mark:x:2007:2007::/home/mark:/bin/bash

查询所有已安装包中带 lrzsz 关键字的包

[root@Centos83 ~]# rpm -qa | grep lrzsz         # grep 后面加关键字,可以查找文件中的内容。
lrzsz-0.12.20-43.el8.x86_64
[root@Centos83 ~]# which find # 查看 find 命令的路径
/usr/bin/find
[root@Centos83 ~]# rpm -qf /usr/bin/find # 查询文件或命令属于哪个安装包 等同于 rpm -qf `which find` 命令
findutils-4.6.0-20.el8.x86_64
[root@Centos83 ~]# rpm -qf `which find` # 反引号中可以执行 shell 命令
findutils-4.6.0-20.el8.x86_64
[root@Centos83 ~]# rpm -qi lrzsz # 查看 lrzsz 详细安装信息
Name       : lrzsz
Version     : 0.12.20
Release     : 43.el8
Architecture: x86_64
Install Date: 2021年06月26日 星期六 19时20分45秒
Group       : Applications/Communications
Size       : 194342
License     : GPLv2+
Signature   : RSA/SHA256, 2019年07月02日 星期二 07时59分37秒, Key ID 05b555b38483c65d
Source RPM : lrzsz-0.12.20-43.el8.src.rpm
Build Date : 2019年05月11日 星期六 22时54分52秒
Build Host : x86-02.mbox.centos.org
Relocations : (not relocatable)
Packager   : CentOS Buildsys <bugs@centos.org>
Vendor     : CentOS
URL         : http://www.ohse.de/uwe/software/lrzsz.html
Summary     : The lrz and lsz modem communications programs
Description :
Lrzsz (consisting of lrz and lsz) is a cosmetically modified
zmodem/ymodem/xmodem package built from the public-domain version of
the rzsz package. Lrzsz was created to provide a working GNU
copylefted Zmodem solution for Linux systems.
[root@Centos83 ~]# rpm -qf `which vim` # 查看 vim 命令的路径
vim-enhanced-8.0.1763-15.el8.x86_64
[root@Centos83 ~]# rpm -qi vim-enhanced # 查看 vim-enhanced 详细安装信息
……………………

查询没有安装的 RPM 包,要加参数: -p rpm -qpi

[root@Centos83 ~]# rpm -qpi /mnt/AppStream/Packages/php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64.rpm 
Name       : php-mysqlnd
Version     : 7.2.24
Release     : 1.module_el8.2.0+313+b04d0a66
Architecture: x86_64
Install Date: (not installed)
Group       : Unspecified
Size       : 451870
License     : PHP
Signature   : RSA/SHA256, 2020年05月12日 星期二 22时45分34秒, Key ID 05b555b38483c65d
Source RPM : php-7.2.24-1.module_el8.2.0+313+b04d0a66.src.rpm
Build Date : 2020年05月07日 星期四 10时37分08秒
Build Host : x86-01.mbox.centos.org
Relocations : (not relocatable)
Packager   : CentOS Buildsys <bugs@centos.org>
Vendor     : CentOS
URL         : http://www.php.net/
Summary     : A module for PHP applications that use MySQL databases ##php 使用 mysql 数据库的一个模块
Description :
The php-mysqlnd package contains a dynamic shared object that will add
MySQL database support to PHP. MySQL is an object-relational database
management system. PHP is an HTML-embeddable scripting language. If
you need MySQL support for PHP applications, you will need to install
this package and the php package.

This package use the MySQL Native Driver

查看 rpm 安装后,将生成哪些文件 要加参数: -l(小写l)

[root@Centos83 ~]# rpm -qpl /mnt/AppStream/Packages/nginx-1.18.0-2.module_el8.3.0+430+f2605aab.x86_64.rpm 
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
/usr/bin/nginx-upgrade
/usr/lib/.build-id
/usr/lib/.build-id/ce
/usr/lib/.build-id/ce/9cb6fdae2817d2181753cd4dfb2cfda6146354
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx/modules
/usr/sbin/nginx
/usr/share/doc/nginx
/usr/share/doc/nginx/CHANGES
/usr/share/doc/nginx/README
/usr/share/doc/nginx/README.dynamic
/usr/share/licenses/nginx
/usr/share/licenses/nginx/LICENSE
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx-upgrade.8.gz
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx/html/404.html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/usr/share/nginx/html/nginx-logo.png
/usr/share/nginx/html/poweredby.png
/usr/share/vim/vimfiles/ftdetect/nginx.vim
/usr/share/vim/vimfiles/indent/nginx.vim
/usr/share/vim/vimfiles/syntax/nginx.vim
/var/lib/nginx
/var/lib/nginx/tmp
/var/log/nginx

8.1.4 查看软件包内容是否被修改

rpm -V 包名

rpm -Vf 文件路径

[root@Centos83 ~]# which find                   # 查看 find 命令的路径
/usr/bin/find
[root@Centos83 ~]# rpm -qf /usr/bin/find # 查询文件或命令属于哪个安装包
findutils-4.6.0-20.el8.x86_64
上面两条命令,等价于以下面这条命令:
[root@Centos83 ~]# rpm -qf `which find` # rpm -qf + 执行`` 内的命令
findutils-4.6.0-20.el8.x86_64

``这是反引号。 一行命令中,如果有反引号,那么先执行反引号中的命令,把反引号中的命令的输出,作为前面命令输入。

查看每个命令或文件,有没有被修改。

[root@Centos83 ~]# rpm -Vf /usr/bin/find        # 参数-Vf 后面加文件的路径,查看每个命令或文件,有没有被修改。
[root@Centos83 ~]# echo abcd >> /usr/bin/find
[root@Centos83 ~]# rpm -Vf /usr/bin/find
S.5....T.   /usr/bin/find

注:如果出现的是点,表示测试这一项,没有被修改

出现下面的字符代表某测试的失败:

5 — MD5 校验和是否改变,你也看成文件内容是否改变

S — 文件长度,大小是否改变

L — 符号链接,文件路径是否改变

T — 文件修改日期是否改变

D — 设备

U — 用户,文件的属主

G — 用户组

M — 模式 (包含许可和文件类型)

? — 不可读文件

再后面的 c 文件名,它表示的是文件类型

c 配置文件

d 普通文件

g 不该出现的文件,意思就是这个文件不该被这个包所包含

l 授权文件(license file)

r 描述文件

 

-V 后面加软件包的名字,查看这个包安装的所有文件,没有被修改。

[root@Centos83 ~]# rpm -V lrzsz     #-V 后面加软件包的名字,查看这个包安装的所有文件,没有被修改。

查看系统中所有的 rpm 包及安装的文件有没有被***修改

[root@Centos83 ~]# rpm -Va  > rpm_check.txt     #查看系统中所有的 rpm 包及安装的文件有没有被修改并将结果输出到 rpm_check.txt。

注: 检验时参考了 /var/lib/rpm 目录下的 rpm 数据库信息

Linux云计算集群架构师->第八章 Centos8 软件包的管理与安装

8.1.5 rpm 包卸载和升级

用法:rpm -e(erase) 包名

[root@Centos83 ~]# rpm -q lrzsz             # 查询指定的包是否安装 
lrzsz-0.12.20-43.el8.x86_64
[root@Centos83 ~]# rpm -e lrzsz # 卸载 lrzsz 包
[root@Centos83 ~]# rpm -q lrzsz # 已经找不到 lrzsz 包了,说明卸载成功了
未安装软件包 lrzsz
#参数: --nodeps 忽略依赖,建议在卸载时不要用 rpm 去卸载有依赖关系的包,应该用 yum
升级:
[root@Centos83 ~]# rpm -Uvh /mnt/BaseOS/Packages/lrzsz-0.12.20-43.el8.x86_64.rpm #centos8 下安装
[root@xuegod63 ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
#centos7 下升级或安装 lrzsz 包 注意:目录结构不一样。

#因为升级时会有一些依赖包要解决。 所以一般我们使用 yum update 包来升级。

8.1.6 解决 rpm 依赖关系:

[root@Centos83 ~]# rpm -ivh /mnt/AppStream/Packages/httpd-tools-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64.rpm    

测试安装时没报错,拿课堂笔记来备注>>>>>>

Linux云计算集群架构师->第八章 Centos8 软件包的管理与安装

我们需要把依赖包安装上,才可以。

[root@xuegod63 ~]# rpm -ivh /mnt/AppStream/Packages/apr-1.6.3-9.el8.x86_64.rpm 
[root@xuegod63 ~]# rpm -ivh /mnt/AppStream/Packages/apr-util-1.6.1-
6.el8.x86_64.rpm
[root@xuegod63 ~]# rpm -ivh /mnt/AppStream/Packages/httpd-tools-2.4.37-
21.module_el8.2.0+382+15b0afa8.x86_64.rpm
#现在就可以安装成功了。

8.2 YUM 的使用

yum(全称为 Yellow dog Updater Modified)是一个前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件,无须繁琐地一次次下载、安装。

例如我们需要安装一个软件 A,而软件 A 依赖 B,而 B 可能还继续依赖其他软件,通过 yum 我们只需要安装 A,其他依赖包会自动安装。

yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记

YUM:解决依赖关系问题,自动下载软件包,它是基于 C/S 架构C=client S=server、ftp\http\file

8.2.1 配置 yum 源

1、挂载镜像:

先确定虚拟机光驱中有加载系统镜像

Linux云计算集群架构师->第八章 Centos8 软件包的管理与安装

[root@Centos83 ~]# mount /dev/cdrom /mnt/           # 挂载光驱
mount: /mnt: /dev/sr0 already mounted on /mnt.
[root@Centos83 ~]# ls /mnt/
AppStream BaseOS EFI images isolinux LICENSE media.repo TRANS.TBL

2、本地配置 yum 源文件:

centos8 本地 YUM 源配置:

在 centos8 当中,本地光盘中的安装包被分别放在了两个路径下。假设挂载路径为/mnt,那么两个Package 路径分别为:/mnt/AppStream/Packages 和/mnt/BaseOS/Packages。

因为 IOS 镜像内的设置,所以导致了在编辑本地 yum 源的时候需要分别写两个路径在配置文件中。

同时网络 yum 源也被分别写到了两个配置文件内。所以就需要把两个网络 yum 源配置文件改名。

Linux云计算集群架构师->第八章 Centos8 软件包的管理与安装

Centos8 与之前版本不同的是增加了一个 CentOS-Linux-AppStream.repo 文件,CentOS-Linux-AppStream.repo 和 CentOS-Linux-BaseOS.repo文件都需要移除目录或者改名。

BaseOS 类似于原来的软件仓库,主要提供了系统的基础组件,它支持与之前版本兼容AppStream:它提供的是系统以外的应用程序,如 httpd,nginx,php,mariadb-server 等

(1)首先挂载光盘:

[root@Centos83 ~]# mount /dev/cdrom /mnt/           # 挂载光驱
mount: /mnt: /dev/sr0 already mounted on /mnt.

(2)创建一个本地 yum 配置文件 centos8.repo:

[root@Centos83 ~]# vim /etc/yum.repos.d/Centos8.repo

[Centos-media-BaseOS]
name=CentOS-BaseOS-$releasever - Media
baseurl=file:///mnt/BaseOS
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[Centos-media-AppStream]
name=CentOS-AppStream-$releasever - Media
baseurl=file:///mnt/AppStream
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

添加修改完两个区域后保存退出。 注:如果 gpgcheck=1 ,需要导入 rpm 公钥。方便后期校对 rpm 包。一般情况,写为 0 工作中就写成 1 并导入公钥。这样安全。

(3)移动网络 yum 源配置文件位置:

[root@Centos83 ~]# vim /etc/yum.repos.d/Centos8.repo    #编辑Centos8.repo文件
[root@Centos83 ~]# mkdir /opt/yum #新建/opt/yum目录
[root@Centos83 ~]# mv /etc/yum.repos.d/C* /opt/yum #移动yum.repos.d到刚建的目录下
[root@Centos83 ~]# yum makecache #新建yum缓存
CentOS-BaseOS-8 - Media                        23 MB/s | 2.3 MB     00:00    
CentOS-AppStream-8 - Media                     40 MB/s | 6.2 MB     00:00    
元数据缓存已建立。
[root@Centos83 ~]# ll /usr/bin/yum
lrwxrwxrwx. 1 root root 5 8月   5 2020 /usr/bin/yum -> dnf-3
[root@Centos83 ~]# ll /usr/bin/yum
lrwxrwxrwx. 1 root root 5 8月   5 2020 /usr/bin/yum -> dnf-3

Linux云计算集群架构师->第八章 Centos8 软件包的管理与安装

注:但是我们执行的 yum 命令是一个软连接,它被链接到了 dnf-3 命令上。

使用 DNF 来管理软件包,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面内容。

3、网络 yum 源

Centos 使用阿里网络源: https://developer.aliyun.com/mirror/centos

[root@Centos83 ~]# wget -O /etc/yum.repos.d/Centos-8.repo http://mirrors.aliyun.com/repo/Centos-8.repo              #下载阿里网络源

安装 Centos epel 扩展 yum 源。

注:epel 源是对 Centos 系统中自带的 base 源的扩展。(因为不是所有软件包都放在 base 源里)

[root@Centos83 ~]# yum -y install epel-release          # 安装 epel 源
[root@Centos83 ~]# ls /etc/yum.repos.d/epel.repo # 这就是安装的 epel

源阿里 epel 源地址:https://developer.aliyun.com/mirror/epel

8.2.2 yum 使用

yum 常用操作:

[root@Centos83 ~]# yum -y install httpd     #安装软件包, -y 直接安装不提示
[root@Centos83 ~]# yum update #升级软件包,改变软件设置和系统设置,系统版本内核都升级。
[root@Centos83 ~]# yum upgrade #只升级软件包,不改变软件设置和系统设置,系统版本升级,内核不改变。工作中推荐使用这种升级方式。
[root@Centos83 ~]# yum info httpd #查询 rpm 包作用
[root@Centos83 ~]# yum provides /usr/bin/find #查看命令是哪个软件包安装的
[root@Centos83 ~]# yum -y remove httpd #卸载包
[root@Centos83 ~]# yum search httpd #在软件包的包名和详细描述信息中搜索包括指定字符串的软件包
[root@Centos83 ~]# yum search httpd
[root@Centos83 ~]# yum search lrzsz …………

yum 报错,注意的几个小问题:

1、确定光盘是否链接,光盘是否挂载

2、配置文件中格式是否正确,字母,符号有没有少写,挂载点和配置文件中设置的是否一致

3、网络源需要联网,操作和 RPM 类似,只是会自动安装依赖项。

8.2.3 yum 安装开发工具软件包组

[root@Centos83 ~]# yum grouplist                #查看有哪些软件包组
[root@Centos83 ~]# echo $LANG zh_CN.UTF-8 #想显示中文,则执行以一下命令
[root@Centos83 ~]# LANG=en.US_UTF-8 #想变成英文,则执行以一下命令

当你最小化安装系统后,在源码编译安装软件包时,觉得很需要安装很多依赖包,很痛苦,可以先安装好这个 Development tools 开发工具软件包组。

[root@Centos83 ~]# yum groupinstall 'Development tools'     #安装开发工具软件包组。

8.3 CentOS8 中使用 DNF 管理软件包

DNF:Dandified YUM,是基于 RPM 的 Linux 发行版的软件包管理器。它用于在 Fedora / RHEL / CentOS 操作系统中安装,更新和删除软件包。 它是 Fedora 22,CentOS8 和 RHEL8 的默认软件包管理器。 DNF 是 YUM 的下一代版本,并打算在基于 RPM 的系统中替代 YUM。 DNF 功能强大且具有健壮的特征。DNF 使维护软件包组变得容易,并且能够自动解决依赖性问题。

Dandified [ˈdændɪfaɪd] 打扮时髦; 打扮得华丽的;

目前 DNF 命令和 YUM 命令相互兼容,软件包仓库依旧使用 YUM 仓库。

已安装软件包

[root@Centos83 ~]# dnf list installed           # 查看已安装软件包
[root@Centos83 ~]# dnf search httpd # 搜索查找软件包
[root@Centos83 ~]# dnf install -y httpd # 安装软件包
[root@Centos83 ~]# dnf remove lrzsz # 删除软件包
[root@Centos83 ~]# dnf download nginx # 下载软件包
[root@Centos83 ~]# dnf info httpd # 查看软件包信息-已安装和未安装都可以
[root@Centos83 ~]# dnf check-update # 检查系统中可更新软件包
[root@Centos83 ~]# dnf update # 更新所有软件包 或者用 dnf upgrade
[root@Centos83 ~]# dnf update httpd # 更新指定软件包
[root@Centos83 ~]# dnf grouplist # 列出软件包组 等同于 yum grouplist
[root@Centos83 ~]# dnf groupinstall 'Development tools' # 安装软件包组(开发工具包)
[root@Centos83 ~]# dnf groupupate 'Development tools' # 更新软件包组(开发工具包)

清空所有缓存

在使用 DNF 的过程中,会因为各种原因在系统中残留各种过时的文件和未完成的编译工程。我们可以使用该命令来删除这些没用的垃圾文件。并且软件仓库中的软件包依赖也会被清空,再次安装软件时则重新下载软件包依赖信息。

[root@Centos83 ~]# dnf clean all            # 清空yum缓存 或者
[root@Centos83 ~]# yum clean all # 清空yum缓存 或者
[root@Centos83 ~]# dnf makecache # 重新创建新的软件包依赖关系
[root@Centos83 ~]# yum makecache # 重新创建新的软件包依赖关系
[root@Centos83 ~]# yum list # 清空后,列出软件列表时会自动创建新的软件包依赖关系

8.4 实战 tar 源码包管理-源码包安装方法

8.4.1 源码安装 nginx

  1. 编译环境如 gcc 和 gcc-c++编译器,make

  2. 准备软件 : nginx-1.18.0.tar.gz

部署 Nginx

安装 nginx 源码编译,需要的依赖包:

[root@Centos83 ~]#  -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel # 安装依赖包

软件包说明:

gcc c 语言编译器。

gcc-c++ c++ 语言编译器。

make 用于 configure 和 make 编译的工具。

zlib :nginx 提供 gzip 压缩 模块,需要 zlib 库支持。

pcre 包作用是让 nginx 支持正则表达式,地址重写 rewrite

openssl-devel :让 nginx 提供 ssl 功能。

开始安装:

源码编译 3 把斧:./configure , make ,make install

[root@Centos83 ~]# tar -xvf nginx-1.18.0.tar.gz 
[root@Centos83 ~]# cd nginx-1.18.0/
[root@Centos83 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx
[root@Centos83 nginx-1.18.0]# make -j 4
[root@Centos83 ~]# make install
  1. 详解源码安装 3 把斧 配置(configure)、编译(make)、安装(make install)

./configure

a. 指定安装路径,例如 --prefix=/usr/local/nginx

b. 启用或禁用某项功能, 例如 --enable-ssl,--disable-filter

c. 和其它软件关联,例如--with-pcre --with-http_ssl_module

d. 检查安装环境,例如是否有编译器 gcc,是否满足软件的依赖需求

最终生成:Makefile

make -j 4 #把源代码文件编译成可执行的二进制文件,按 Makefile 文件编译,可以使用-j 4

指定 4 核心 CPU 编译,提升速度

make install #按 Makefile 定义的文件路径安装

make clean //清除上次的 make 命令所产生的 object 和 Makefile 文件。使用场景:当需要重

新配置执行 configure 时,需要先执行 make clean。

[root@Centos83 nginx-1.18.0]# make clean                #仅仅清除之前的可执行文件及配置文件
[root@Centos83 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx/ ##重新进行配置

8.4.2 删除源码包:

安装完,删除源码包:

有时删除不干净,所以建议大家安装时,在 configure 步骤添加一个: --prefix 参数。这样删除或备份时,直接对删除--prefix 指定的安装目录操作就可以了。

[root@Centos83 nginx-1.18.0]# rm -rf /usr/local/nginx/      #删除安装文件

8.4.3 实战 2:源码编译出错的 5 种完美解决方法

安装则解决依赖:

[root@Centos83 ~]# ./configure       #检查系统安装环境
Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library

源码编译出错后,常见解决方法:

方法 1:

[root@Centos83 ~]#  mount /dev/sr0 /mnt
[root@Centos83 Packages]# cd /mnt/BaseOS/Packages
[root@Centos83 Packages]# rpm -ivh ext2fs

#切到本地软件包所在路径,按两下 tab 键。 一般情况,ext2fs 就是要安装的软件包的名字开头。如果存在会自动补全软件包全名。

方法 2:

[root@Centos83 Packages]# ls *ext2fs*   

方法 3:

[root@Centos83 Packages]# ls *2fs*
e2fsprogs-1.45.6-1.el8.x86_64.rpm
e2fsprogs-devel-1.45.6-1.el8.i686.rpm
e2fsprogs-devel-1.45.6-1.el8.x86_64.rpm
e2fsprogs-libs-1.45.6-1.el8.i686.rpm
e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm

方法 4: 终极大招

https://www.rpmseek.com/index.html

Linux云计算集群架构师->第八章 Centos8 软件包的管理与安装

方法 5: 使用 yum 去搜索,推荐使用这个方法

[root@Centos83 Packages]# yum search 2fs

安装库:

[root@Centos83 Packages]# cd /mnt/BaseOS/Packages
[root@Centos83 Packages]# rpm -ivh e2fsprogs-libs-1.45.6-1.el8.x86_64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
package e2fsprogs-libs-1.45.6-1.el8.x86_64 is already installed

这里显示库已经安装,但是 configure 时又说找不到。怎么办?

解决:安装了库,却显示找不到。 这种情况: 需要安装库的开发文件

[root@Centos83 Packages]# rpm -ivh e2fsprogs-devel-1.45.6-1.el8.x86_64.rpm devel = development (开发)
错误:依赖检测失败:
libcom_err-devel(x86-64) = 1.45.6-1.el8 被 e2fsprogs-devel-1.45.6-1.el8.x86_64 需要
[root@Centos83 Packages]#[root@Centos83 Packages]# ls libcom_err-devel*
[root@xuegod83 Packages]# rpm -ivh libcom_err-devel-1.45.6-1.el8.x86_64.rpm

[root@Centos83 Packages]# yum -y install e2fsprogs-devel.x86_64

扩展:查看 rpm 包安装后生成的文件:

[root@Centos83 Packages]# rpm -qpl e2fsprogs-devel-1.45.6-1.el8.x86_64.rpm more
/usr/include/e2p
/usr/include/e2p/e2p.h
/usr/include/ext2fs
/usr/include/ext2fs/bitops.h
/usr/include/ext2fs/ext2_err.h
/usr/include/ext2fs/ext2_ext_attr.h
/usr/include/ext2fs/ext2_fs.h
/usr/include/ext2fs/ext2_io.h
/usr/include/ext2fs/ext2_types-x86_64.h
/usr/include/ext2fs/ext2_types.h
/usr/include/ext2fs/ext2fs.h
/usr/include/ext2fs/ext3_extents.h
/usr/include/ext2fs/hashmap.h
/usr/include/ext2fs/qcow2.h
/usr/include/ext2fs/tdb.h
/usr/lib64/libe2p.so
/usr/lib64/libext2fs.so
/usr/lib64/pkgconfig/e2p.pc
/usr/lib64/pkgconfig/ext2fs.pc
/usr/share/info/libext2fs.info.gz
error: open of more failed: No such file or directory

总结,软件安装方法特点:

rpm+yum:方便,软件版本低。稳定性好、管理方便。性能稍差。

源码编译安装:麻烦,软件版本新,可以定制。稳定性稍差、管理稍差。性能好。

源码编译安装:主要是安装 LAMP 或 LNMP 架构时,我们会用

 

总结:

8.1 使用 rpm 命令-安装-查看-卸载-rpm 软件包

8.2 yum 管理软件包

8.3 CentOS8 中使用 DNF 管理软件包

8.4 实战 tar 源码包管理-源码包安装方法

上一篇:笔记本安装Centos8


下一篇:基于rsync daemon 实现 sersync