4.软件包的安装与管理

Centos7 软件包的管理与安装

软件包的管理

软件包的类型

rpm 二进制包------》已经使用GCC 编译后的

tar 源码包-----》需要编译

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

rpm 软件包的管理 rpm 包的获取方式

1)、Centos 系统镜像光盘

2)、网站 rpmfind.net

3)、比如安装 mysql、nginx 软件,我们可以去它的官方网站下载:http://www.mysql.com rpm 包格式的说明

[root@exercise1 ~]# ls /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm

zsh     -5.        0.         2-        28.                       el7.             x86_64.rpm 

软件名  主版本号   次版本号    修订      release(第几次发布版本)   操作系统版本     软件包是64位包
#修订  指是第几次修改bug。   
#发布  指的是:第几次发布。发布时,可能只是对软件安装的默认参数做了修改而没有其它改动。

安装 rpm 软件

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

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

参数:

-i 是install的意思, 安装软件包
-v 显示附加信息,提供更多详细信息
-V 校验,对已经安装的软件进行校验

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

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

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

从本地安装

1.需要进行挂载(mount)

[root@exercise1 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@exercise1 ~]# 

或者

[root@exercise1 ~]# mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@exercise1 ~]# 

永久挂载与卸载临时挂载

方法一:卸载挂载源
[root@exercise1 ~]# umount /dev/cdrom   

或

[root@exercise1 ~]# umount /dev/sr0

方法二:卸载挂载点
[root@exercise1 ~]# umount /mnt

​ 永久:
​ [root@exercise1 ~]# vim /etc/fstab
​ #添加如下:
​ /dev/cdrom /mnt iso9660 defaults 0 0

mount1.png
mount2.png

2.开始安装

[root@exercise1 ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-28.el7                 ################################# [100%]
[root@exercise1 ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/zsh
[root@exercise1 ~]# 

从网上下载直接安装 centos epel 扩展源

安装 centos epel 扩展 yum 源

[root@exercise1 ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
获取http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
警告:/var/tmp/rpm-tmp.8hZUGV: 头V4 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:epel-release-7-14                ################################# [100%]
[root@exercise1 ~]# 

注:epel 源是对 centos7 系统中自带的 base 源的扩展。

rpm 查询功能

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

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

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

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

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

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

-R 查询软件包的依赖性

[root@exercise1 ~]# rpm -q zsh      --->查询指定的包是否安装
zsh-5.0.2-28.el7.x86_64         


​ [root@exercise1 ~]# rpm -qa —>查询所有已安装包
​ open-vm-tools-10.1.5-3.el7.x86_64
​ grub2-common-2.02-0.64.el7.centos.noarch
​ kexec-tools-2.0.14-17.el7.x86_64
​ ……


​ [root@exercise1 ~]# rpm -qa | grep vim —>查询所有已安装包中带 vim 关键字的包
​ vim-filesystem-7.4.629-8.el7_9.x86_64
​ vim-enhanced-7.4.629-8.el7_9.x86_64
​ vim-common-7.4.629-8.el7_9.x86_64
​ vim-minimal-7.4.160-2.el7.x86_64
​ [root@exercise1 ~]#

​ [root@exercise1 ~]# which find #查看 find 命令的路径
​ /usr/bin/find
​ [root@exercise1 ~]# rpm -qf /usr/bin/find #查询文件或命令属于哪个安装包
​ findutils-4.5.11-5.el7.x86_64

查询已经安装的 rpm 包的详细信息或作用 rpm -qi rpm包名

[root@exercise1 ~]# rpm -qi vim-common-7.4.629-8.el7_9.x86_64
Name        : vim-common
Epoch       : 2
Version     : 7.4.629
Release     : 8.el7_9
Architecture: x86_64
Install Date: 2022年01月10日 星期一 08时49分49秒
Group       : Applications/Editors
Size        : 22155744
License     : Vim
Signature   : RSA/SHA256, 2020年12月18日 星期五 04时37分20秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : vim-7.4.629-8.el7_9.src.rpm
Build Date  : 2020年12月16日 星期三 00时44分28秒
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.vim.org/
Summary     : The common files needed by any version of the VIM editor
Description :
VIM (VIsual editor iMproved) is an updated and improved version of the
vi editor.  Vi was the first real screen-based editor for UNIX, and is
still very popular.  VIM improves on vi by adding new features:
multiple windows, multi-level undo, block highlighting and more.  The
vim-common package contains files which every VIM binary will need in
order to run.

If you are installing vim-enhanced or vim-X11, you'll also need
to install the vim-common package.

针对没有安装的 RPM 包,要加参数: -p

[root@home Packages]# rpm -qpi zip-3.0-11.el7.x86_64.rpm 
警告:zip-3.0-11.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
Name        : zip
Version     : 3.0
Release     : 11.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/Archiving
Size        : 815173
License     : BSD
Signature   : RSA/SHA256, 2016年11月21日 星期一 05时04分58秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : zip-3.0-11.el7.src.rpm
Build Date  : 2016年11月06日 星期日 00时49分55秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.info-zip.org/Zip.html
Summary     : A file compression and packaging utility compatible with PKZIP
Description :
The zip program is a compression and file packaging utility.  Zip is
analogous to a combination of the UNIX tar and compress commands and
is compatible with PKZIP (a compression and file packaging utility for
MS-DOS systems).

Install the zip package if you need to compress files using the zip
program.



​ [root@exercise1 ~]# rpm -qpl /mnt/Packages/zip-3.0-11.el7.x86_64.rpm #查看 rpm 安装后, 将生成哪些文件
​ /usr/bin/zip
​ /usr/bin/zipcloak
​ /usr/bin/zipnote
​ /usr/bin/zipsplit
​ /usr/share/doc/zip-3.0
​ /usr/share/doc/zip-3.0/CHANGES
​ /usr/share/doc/zip-3.0/LICENSE
​ /usr/share/doc/zip-3.0/README
​ /usr/share/doc/zip-3.0/README.CR
​ /usr/share/doc/zip-3.0/TODO
​ /usr/share/doc/zip-3.0/WHATSNEW
​ /usr/share/doc/zip-3.0/WHERE
​ /usr/share/doc/zip-3.0/algorith.txt
​ /usr/share/man/man1/zip.1.gz
​ /usr/share/man/man1/zipcloak.1.gz
​ /usr/share/man/man1/zipnote.1.gz
​ /usr/share/man/man1/zipsplit.1.gz
​ [root@exercise1 ~]# rpm -qR yum-3.4.3-154.el7.centos.noarch #查询软件包的依赖性
​ /usr/bin/python
​ config(yum) = 3.4.3-154.el7.centos
​ cpio
​ diffutils
​ pygpgme
​ pyliblzma
​ python >= 2.4
​ python(abi) = 2.7
​ python-iniparse
​ python-sqlite
​ python-urlgrabber >= 3.10-8
​ pyxattr
​ rpm >= 0:4.11.3-22
​ rpm-python
​ rpmlib(CompressedFileNames) <= 3.0.4-1
​ rpmlib(FileDigests) <= 4.6.0-1
​ rpmlib(PayloadFilesHavePrefix) <= 4.0-1
​ yum-metadata-parser >= 1.1.0
​ yum-plugin-fastestmirror
​ rpmlib(PayloadIsXz) <= 5.2-1
​ [root@exercise1 ~]#

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

rpm -V 包名

rpm -Vf 文件路径

[root@exercise1 ~]# which find
/usr/bin/find
[root@exercise1 ~]# rpm -qf /usr/bin/find
findutils-4.5.11-5.el7.x86_64
[root@exercise1 ~]# rpm -Vf /usr/bin/find      #检查具体文件,没问题所以没有结果输出
[root@exercise1 ~]# echo aaa >> /usr/bin/find
[root@exercise1 ~]# rpm -Vf /usr/bin/find
S.5....T.    /usr/bin/find
[root@exercise1 ~]# rpm -V findutils      #检查包
S.5....T.    /usr/bin/find

注:如果出现的全是点,表示测试通过 出现下面的字符代表某测试的失败:

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

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

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

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

D — 设备

U — 用户,文件的属主 G — 用户组

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

? — 不可读文件

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

c 配置文件

d 普通文件

g 不该出现的文件,意思就是这个文件不该被这个包所包含l 授权文件(license file) r 描述文件


实战:查看系统中所有的 rpm 包及安装的文件有没有被黑客修改

[root@exercise1 ~]# rpm -Va > /opt/rpm_check.txt
[root@exercise1 ~]# cat /opt/rpm_check.txt 
.......T.  c /etc/bashrc
S.5....T.  c /root/.bashrc
S.5....T.  c /etc/sysconfig/authconfig
S.5....T.    /usr/bin/find
....L....  c /etc/pam.d/fingerprint-auth
....L....  c /etc/pam.d/password-auth
....L....  c /etc/pam.d/postlogin
....L....  c /etc/pam.d/smartcard-auth
....L....  c /etc/pam.d/system-auth
遗漏     /var/run/wpa_supplicant
[root@exercise1 ~]# 

> # 这个> 表示标准输出重定向。 将 rpm -qa 输出到屏幕上的信息重定向到 rpm_check.txt 文件中。 在文件中加一下这个参数描述
注: 检验时参考了 /var/lib/rpm 目录下的 rpm 数据库信息

rpm 包卸载和升级

用法:rpm -e (erase) 包名

[root@exercise1 ~]# rpm -qa zsh
zsh-5.0.2-28.el7 .x86 64
[root@exercise1 ~]# rpm -e zsh 
[root@exercise1 ~]#
[root@exercise1 ~]# rpm -qa zsh
参数: --nodeps 忽略依赖,建议在卸载时不要用 rpm 去卸载有依赖关系的包,应该用yum 
[root@exercise1 ~]# rpm -e --nodeps lrzsz

升级:
[root@exercise1 ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm      #因为升级时
会有一些依赖包要解决。 所以一般我们使用yum update 包   来升级。
 
例:解决 rpm 依赖关系:
[root@exercise1 ~]# rpm -ivh vim-common-7.4.160-2.el7.x86_64.rpm
警告:vim-common-7.4.160-2.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:
	vim-filesystem 被 vim-common-2:7.4.160-2.el7.x86_64 需要
[root@exercise1 ~]# rpm -ivh vim-filesystem-7.4.160-2.el7.x86_64.rpm
[root@exercise1 ~]# rpm -ivh vim-common-7.4.160-2.el7.x86_64.rpm

YUM的使用

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

YUM :解决依赖关系问题,自动下载软件包,它是基于 C/S 架构

C=client           S=ftp\http\file

yum工具运行的日志 /var/log/yum.log

配置本地yum源

1.挂载镜像:

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

[root@exercise1 ~]# mount /dev/cdrom /mnt/ 
[root@exercise1 ~]# ls /mnt/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@exercise1 ~]# 

2.配置 yum 源文件:

[root@exercise1 ~]# mkdir /etc/yum.repos.d/bak   
[root@exercise1 ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/bak   #把原来的.repo文件放在同一个目录下
[root@exercise1 ~]# ll /etc/yum.repos.d/bak/
总用量 36
-rw-r--r--. 1 root root 1664 8月  30 2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 8月  30 2017 CentOS-CR.repo
-rw-r--r--. 1 root root  649 8月  30 2017 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 8月  30 2017 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 8月  30 2017 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 8月  30 2017 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 8月  30 2017 CentOS-Vault.repo
-rw-r--r--. 1 root root 1358 9月   5 01:37 epel.repo
-rw-r--r--. 1 root root 1457 9月   5 01:37 epel-testing.repo
[root@exercise1 ~]# 


​ [root@exercise1 ~]# vim /etc/yum.repos.d/local.repo #必须以.repo结尾,插入以下内容
​ [local]
​ name=local
​ baseurl=file:///mnt
​ enable=1
​ gpgcheck=0
​ gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7

​ [root@exercise1 ~]# yum clean all #清空一下 yum 缓存
​ [root@exercise1 ~]# yum list #查看列表
​ [root@exercise1 ~]# yum repolist #显示仓库,统计各个仓库安装包数量
​ 已加载插件:fastestmirror
​ Loading mirror speeds from cached hostfile
​ 源标识 源名称 状态
​ loacl local 3,894
​ repolist: 3,894

注:

[local] #yum 源名称,在本服务器上唯一的,用来区分不同的 yum 源

name= local #对 yum 源描述信息

baseurl=file:///mnt #yum 源的路径,提供方式包括 FTP(ftp://…)、 HTTP(http://…)、本地(file:///…光盘挂载目录所在的位置)

enabled=1 #为 1 ,表示启用 yum 源;0 为禁用,若不设置,默认开启

gpgcheck=0 #为 1 ,使用公钥检验 rpm 包的正确性;0 为不校验

gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7 #指定进行 rpm 校验的公钥文件地址

安装vim

[root@home yum.repos.d]# yum install vim

下载命令

wget、curl

rz、sz

wget下载资源,并且指定路径,同时指定文件名称 				#如果下载时慢,可用迅雷下载完后,再上传liunx
-O:另存为:

curl是用来获取网页的源码信息的
-o:另存为;

sz下载刚才的文件

语法:
sz  文件的绝对路径,或相对路径;
只可以是文件,不可以是文件夹;
问题:
1.不支持超过4个G的文件;
2.不支持断点续传;
3.如果必须需要文件夹下载到本地,需要先压缩

rz是将windows的内容上传到liunx服务器;

1.直接将文件拖进去;
2.同样只可以是文件,不可以是文件夹 
3.如果必须需要文件夹下载到本地,需要先压缩

网络 yum 源

repo文件是Linux中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!

Centos 7 配置网络 yum 源

下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

可以选择网易的镜像源:http://mirrors.163.com/.help/CentOS7-Base-163.repo 或者是阿里源镜像 https://mirrors.aliyun.com/repo/Centos-7.repo
centos.png

[root@exercise1 ~]# wget -O /etc/yum.repos.d/Centos-7.163.repo  http://mirrors.163.com/.help/CentOS7-Base-163.repo

或者


​ [root@exercise1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
​ --2022-01-16 13:51:47-- https://mirrors.aliyun.com/repo/Centos-7.repo
​ 正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)… 119.147.41.242, 121.9.246.111, 113.113.101.248, …
​ 正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|119.147.41.242|:443… 已连接。
​ 已发出 HTTP 请求,正在等待回应… 200 OK
​ 长度:2523 (2.5K) [application/octet-stream]
​ 正在保存至: “/etc/yum.repos.d/CentOS-Base.repo”

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

​ 2022-01-16 13:51:47 (898 MB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])

​ [root@exercise1 ~]# ll /etc/yum.repos.d/
​ 总用量 8
​ drwxr-xr-x. 2 root root 229 1月 16 13:31 bak
​ -rw-r–r–. 1 root root 2523 12月 26 2020 CentOS-Base.repo
​ -rw-r–r–. 1 root root 99 1月 16 13:40 local.repo
​ [root@exercise1 ~]#

​ #wget下载文件,-O 将wget下载的文件,保存到指定的位置,保存时可以重新起一个名字,或者直接写一个要保存的路径,这样还用原来的文件名。需要yum安装一下wget


​ #查看/etc/yum.repos.d/CentOS-Base.repo
​ [root@exercise1 ~]# vim /etc/yum.repos.d/CentOS-Base.repo
​ 会看到其中一个仓库baseurl:
​ baseurl=http://mirrors.aliyun.com/centos/ r e l e a s e v e r / o s / releasever/os/ releasever/os/basearch/
​ http://mirrors.aliyuncs.com/centos/ r e l e a s e v e r / o s / releasever/os/ releasever/os/basearch/
​ http://mirrors.cloud.aliyuncs.com/centos/ r e l e a s e v e r / o s / releasever/os/ releasever/os/basearch/

​ #注:$releasever 系统的版本的值等于操作系统版本
​ [root@exercise1 ~]# cat /etc/centos-release
​ CentOS Linux release 7.4.1708 (Core)
​ [root@exercise1 ~]#

$basearch 等于:x86_64

排错: 如果下载 Centos-7.repo 后,不能用

解决:打开阿里云链接:http://mirrors.aliyun.com/centos/ 找到 centos7 最新版本号,如:

找到  7/ or 7.4.1708(本人使用系统版本) ==> x86_64 ==> Packages ==> 把需要的rpm包下载放进之前/etc/yum.repos.d/bak/下

[root@localhost ~]# yum clean all  #清空一下 yum 缓存
[root@localhost ~]# yum list          #查看列表

yum 使用

请记住我们的世界里只有upgrade!!!

yum 常用操作:

[root@localhost ~]# yum list         #罗列各个仓库安装包
[root@localhost ~]# yum repolist      #统计各个仓库安装包数量    
[root@localhost ~]# yum install -y httpd     #安装软件包, -y 安装过程需要询问的都默认为yes
[root@localhost ~]# yum -y update      #升级软件包,改变软件设置和系统设置,系统版本内核都升级(高危操作,慎用)
[root@localhost ~]# yum -y upgrade     #升级软件包,不改变软件设置和系统设置,系统版本升级,内核不改变 
[root@localhost ~]# yum provides /usr/bin/find   #查看命令是哪个软件包安装的
[root@localhost ~]# yum -y remove   包名      #卸载包
[root@localhost ~]# yum search keyword     #按关键字搜索软件包
[root@localhost ~]# yum info   httpd      #查询 rpm 包作用
[root@localhost ~]# yum history              #查看历史

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

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

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

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

yum 安装开发工具软件包组

# yum grouplist     #查看有哪些软件包组 
语法:yum groupinstall  groupname
yum grouplist   #显示中文,如果想变成英文,则执行以一下命令 
[root@localhost ~]# echo $LANG
zh CN . UTF-8
[root@localhost ~]# LANG=en_US.UTF-8 
[root@localhost ~]# yum grouplist
 
测试:
[root@localhost ~]# yum remove gcc   -y      #卸载开发工具软件组中的 gcc 包
[root@localhost ~]# yum groupinstall 'Development tools'   -y   #安装开发工具软件包组,安装这
组软件包时,把 gcc 再安装上了

实战:创建本地yum仓库

下载rpm包到本地
使用阿里云的镜像仓库来同步到本地

1.使用reposync来进行同步阿里云镜像

reposync命令是一个python脚本。包含在yum-utils包中。

因此,我们如果要使用reposync命令的时候,需要安装yum-utils包。

使用以下命令:yum install -y yum-utils

reposync -r 仓库名(举例为base) -p 目标目录

#在主机exercise1操作
[root@exercise1 opt]# yum install  -y  yum-utils
[root@exercise1 ~]# yum repolist   # 来查看各仓库名
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
源标识                                           源名称                                                                   状态
base/7/x86_64                                    CentOS-7 - Base - mirrors.aliyun.com                                     10,072
extras/7/x86_64                                  CentOS-7 - Extras - mirrors.aliyun.com                                      500
loacl                                            local                                                                     3,894
updates/7/x86_64                                 CentOS-7 - Updates - mirrors.aliyun.com                                   3,295
repolist: 17,761
[root@exercise1 ~]# 

[root@exercise1 ~]# mkdir /opt/yum   # 本地仓库目录
[root@exercise1 ~]# reposync -r extras -p /opt/yum/   #此时,就将镜像仓库extras(500个rpm)下载到了本地

extras.png

2.可以只把需要的rpm包下载到本地

使用yum命令加上参数

–downloadonly:只下载

–downloaddir:指定下载目录

#在主机exercise1操作
[root@teach opt]#yum install zlib-devel.i686  --downloadonly --downloaddir=/opt/yum/extras/Packages/
生成yum仓库数据文件信息(repodata信息)

1.createrepo生成repodata信息

#在主机exercise1操作
[root@exercise1 yum]# yum install -y createrepo   #需要yum安装creatrrepo
[root@exercise1 yum]# createrepo /opt/yum/   #使用完成后会在/opt/yum/目录里面生成repodata,这个文件里面存放的就是仓库的各项信息

2.检查本地仓库信息是否正常

1): 配置本地yum仓库

#在主机exercise1操作
[root@exercise1 yum]# vim /etc/yum.repos.d/local.repo    #在原来的基础上添加多一个local2仓库
[local2]
name=local2
baseurl=file:///opt/yum
enabled=1
gpgcheck=0

[root@exercise1 ~]# yum clean all   #清缓存
[root@exercise1 ~]# yum list   #罗列各个仓库安装包
[root@exercise1 ~]# yum repolist   #统计各个仓库安装包数量  

2): 检查本地仓库信息

[root@exercise1 ~]# yum repoinfo local   # 输出正常表示可以进行正常使用
配置ftp服务,提供局域网下载
#在主机exercise1操作
[root@exercise1 ~]# yum install -y vsftpd
[root@exercise1 ~]# systemctl stop firewalld   #关闭防火墙
[root@exercise1 ~]# systemctl disable firewalld		#关闭开机自启
[root@exercise1 ~]# setenforce 0   #临时关闭selinux安全策略
[root@home ~]# vim /etc/selinux/config			#永久关闭selinux安全策略
修改:SELINUX=enforcing 
为:SELINUX=disabled
[root@exercise1 ~]# systemctl start vsftpd
[root@exercise1 ~]# mv /opt/yum/ /var/ftp/

默认主目录/var/ftp=ftp://主机IP

测试局域网其他机器是否能够访问

在另一台机上执行exercise2

[root@exercise2 ~]# vim /etc/yum.repos.d/local.repo 
#在原来的基础上添加多一个local3仓库
[local3]
name=local3
baseurl=ftp://192.168.119.142/yum
enabled=1
gpgcheck=0

[root@exercise2 ~]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
源标识                                           源名称                                                                   状态
base/7/x86_64                                    CentOS-7 - Base - mirrors.aliyun.com                                     10,072
extras/7/x86_64                                  CentOS-7 - Extras - mirrors.aliyun.com                                      500
local                                            local                                                                     3,894
local3                                           local3                                                                      500
updates/7/x86_64                                 CentOS-7 - Updates - mirrors.aliyun.com                                   3,295
repolist: 18,261
[root@exercise2 ~]# 
#可以连通,证明可以正常使用

ftp://ip地址/yum ==> /var/ftp/yum

本地yum仓库更新

当本地仓库有其他包加入或者同步网络yum源的时候有变动,就需要更新本地yum仓库

在exercise1执行:

reposync -r 仓库名 -p /opt/yum # 同步并更新

createrepo --update /opt/yum # 更新repodata信息

yum clean all && yum repolist # 更新缓存

在exercise2执行:

yum clean all && yum repolist # 更新缓存

源码安装 nginx

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

    yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel #pcre: 支持正则表达式,地址重写 rewrite

  2. 准备软件 : nginx1.18 去官网(http://nginx.org/en/download.html)复制对应版本的下载链接

    [root@localhost ~]# cd /opt
    [root@exercise1 opt]# wget https://nginx.org/download/nginx-1.18.0.tar.gz
    [root@exercise1 opt]# tar -zxvf nginx-1.18.0.tar.gz
    [root@exercise1 opt]# cd nginx-1.18.0

  3. 部署 Nginx

    安装路径为–prefix /usr/local/nginx

    用户组为 --user --group nginx

    指定配置文件 --conf-path /etc/nginx/nginx.conf

    指定错误日志路径–error-log-path /var/log/nginx/error.log

    指定访问日志路径–http-log-path /var/log/nginx/access.log

    –with-threads enable thread pool support

    –with-http_ssl_module 启用ngx_http_ssl_module支持(使支持https请求)

    –with-http_realip_module 启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)

    –with-http_image_filter_module 启用ngx_http_image_filter_module支持(传输JPEG/GIF/PNG 图片的一个过滤器)

    –with-http_sub_module 启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本)

    –with-http_flv_module 启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)

    –with-http_gzip_static_module 启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)

    –with-http_gunzip_module enable ngx_http_gunzip_module

    –with-http_stub_status_module 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)

    –with-http_v2_module enable ngx_http_v2_module

    #根据官网对应文档(http://nginx.org/en/docs/configure.html)来查看对应参数进行预编译
    [root@exercise1 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-threads --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_sub_module --with-http_flv_module --with-http_gzip_static_module --with-http_gzip_static_module --with-http_gunzip_module --with-http_stub_status_module --with-http_v2_module 再加个参数–pid-path=*path*

其中需要解决依赖,当不知道依赖包完整名称是什么的时候可以来这里找一下 https://pkgs.org/ ==> 宝藏网站,利用它查找包

[root@exercise1 nginx-1.18.0]# make -j 4   #使用-j 4 指定 4 核心 CPU 编译,提升速度
[root@exercise1 nginx-1.18.0]# make install

详解源码安装 3 把斧

# ./configure
./configure --help      #可以提供预编译支持帮助
a. 指定安装路径,例如 --prefix=/usr/local/nginx
b. 启用或禁用某项功能, 例如 --enable-ssl, --disable-filter  --with-http_ssl_module
c. 和其它软件关联,例如--with-pcre
d. 检查安装环境,例如是否有编译器 gcc ,是否满足软件的依赖需求 
最终生成:Makefile
#make -j 4          #按 Makefile 文件编译,可以使用-j 4 指定 4 核心 CPU 编译,提升速度
#make install     #按 Makefile 定义的文件路径安装
#make   uninstall  #按 Makefile 定义的文件路径删除
# make clean //清除上次的 make 命令所产生的 object 和 Makefile 文件。使用场景:当需要重新执行 configure 时,需要执行 make clean

删除源码包

安装完,删除: make uninstall

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

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

5种方法

方法 1:[root@exercise1 ~]# rpm -ivh gcc^C     #按两下 tab 键。 一般情况,ext2fs 就是 要安装的软件包的名字开头。如果存在 自动补全
方法 2:[root@exercise1 ~]# ls *gcc*     #查找完整关键字 
方法 3:[root@exercise1 ~]# ls *cc*      #查找部分关键字

方法 4: 终极大招
https://pkgs.org/
pkgs.png

方法 5:   使用 yum 去搜索
[root@exercise1 ~]# yum search gcc 

总结,软件安装方法特点:
rpm +yum :方便,软件版本低。稳定性好、管理方便。性能稍差。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值