搭建一个网络仓库
很多时候不仅仅是一台机器无法上网,而是很多机器都无法上网,但都有联网下载软件的需求,这个时候难道每台机器都挂在光盘吗? 当然可以,但如果软件出现了更新怎么办?
本地光盘提供基础软件包: Base
yum缓存提供常用软件包: nginx, zabbix, docker
1.环境准备
系统 IP 角色
centos7 10.0.0.99 yum仓库服务端
centos7 10.0.0.98 yum仓库客户端
2.服务端进行yum仓库的搭建准备工作
1.关闭防火墙、与selinux
[root@yum_server ~]# systemctl stop firewalld
[root@yum_server ~]# setenforce 0
2.安装ftp服务,启动并加入开机启动
[root@yum_server ~]# yum -y install vsftpd
[root@yum_server ~]# systemctl start vsftpd
[root@yum_server ~]# systemctl enable vsftpd
3.开启yum缓存功能
[root@yum_server ~]# vim /etc/yum.conf
[main] cachedir=/var/cache/yum/releasever
keepcache=1
[root@yum_server ~]# yum clean all
4.提供基础base软件包
[root@yum_server ~]# mkdir /var/ftp/centos7
[root@yum_server ~]# mount /dev/cdrom /mnt
[root@yum_server ~]# cp -rp /mnt/Packages/*.rpm /var/ftp/centos7/
5.提供第三方源
[root@yum_server ~]# mkdir /var/ftp/ops
[root@yum_server ~]# yum -y install nginx docker
6.复制已缓存的 Nginx docker 及依赖包 到自定义 YUM 仓库目录中
[root@yum_server_69_112 ~]# find /var/cache/yum/x86_64/7/
-iname "*.rpm" -exec cp -rf {} /var/ftp/ops ;
7.安装createrepo并创建 reopdata仓库
[root@yum_server_ ~]# yum -y install createrepo
[root@yum_server_ ~]# createrepo /var/ftp/ops
PS: 如果此仓库每次新增软件则需要重新生成一次
3.客户端配置yum源指向服务端
1.客户端配置并使用 base 基础源
[root@yum_client ~]# gzip /etc/yum.repos.d/*
[root@yum_client ~]# vim /etc/yum.repos.d/centos7.repo
[centos7]
name=centos7_base
baseurl=ftp://10.0.0.99/centos7
gpgcheck=0
2.客户端配置并使用 ops 源
[root@yum_client ~]# vim /etc/yum.repos.d/ops.repo
[ops]
name=local ftpserver
baseurl=ftp://10.0.0.99/ops
gpgcheck=0
源码包管理实践
1.源码包是什么
源码包指的是开发编写好的程序源代码,但并没有将其编译为一个能正常使用的工具。
2.为什么要学习源码包
1、部分软件官网仅提供源码包,需要自行编译并安装。
2、部分软件在新版本有一些特性还没来得及制作成rpm包时,可以自行编译软件使用其新特性。
3.源码包的优缺点
1.可以自行修改源代码
2.可以定制需要的相关功能
3.新版软件优先更新源码
4.缺点是: 1) 相对yum安装软件会复杂很多。2) 标准化实施困难,自动化就无法落地。
4.源码包如何获取
常见的软件包都可以在官网获取源码包,比如 apache、nginx、mysql等等
5.将源码包编译为二进制可执行文件步骤如下,简称安装三步曲
PS: 此方法不是百分百通用于所有源码包,建议拿到源码包解压后,进入到目录找相关的README帮助文档
5.源码编译示例
下面通过编译Nginx来深入了解下源码包编译的过程
1.基础环境准备
[root@node1 ~]# yum install -y gcc make wget
2.下载源码包
[root@node1 ~]# wget http://nginx.org/download/nginx-1.15.12.tar.gz
3.解压源码包, 并进入相应目录
[root@node1 ~]# tar xf nginx-1.15.12.tar.gz
[root@node1 ~]# cd nginx-1.15.12
4.配置相关的选项,并生成Makefile
[root@node1 nginx-1.15.12]# ./configure --prefix=/soft/nginx-1.12.2
5.将Makefile文件编译可执行二进制程序
[root@node1 nginx-1.15.12]# make
6.将二进制文件拷贝至对应的目录中
[root@node1 nginx-1.15.12]# make install
源码编译报错信息处理
checking for C compiler ... not found ./configure: error: C compiler cc is not found
yum -y install gcc gcc-c++ make
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
yum install -y pcre-devel
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-
http_gzip_module option, or install the zlib library into the
system, or build the zlib library statically from the source with
nginx by using --with-zlib=<path> option.
yum -y install zlib-devel
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL
library into the system, or build the OpenSSL library statically
from the source with nginx by using --with-openssl=<path> option.
yum -y install openssl-devel