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
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.挂载镜像:
先确定虚拟机光驱中有加载系统镜像
[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
[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)下载到了本地
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
-
编译环境如 gcc 和 gcc-c++编译器,make
yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel #pcre: 支持正则表达式,地址重写 rewrite
-
准备软件 : 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 -
部署 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/
方法 5: 使用 yum 去搜索
[root@exercise1 ~]# yum search gcc
总结,软件安装方法特点:
rpm +yum :方便,软件版本低。稳定性好、管理方便。性能稍差。
源码编译安装:麻烦,软件版本新,可以定制。稳定性稍差、管理稍差。性能好。
源码编译安装:主要是安装 LAMP 或 LNMP 架构时,我们会用