其他综合-搭建本地yum仓库及自制rpm包
搭建本地yum仓库及自制rpm包
- 实验目的
为方便本地
yum的管理,建本地yum仓库,实现局域网内部快速安装常用软件
- 实验环境
VMware:12版本
系统版本:CentOS Linux release 7.6.1810
网络ip段:内网:172.16.1.0/24,外网:10.0.0.0/24
- 实验步骤
- 1、搭建要实现本地
yum管理的软件,测试该软件搭建成功与否;- 2、定制
rpm包及其相关依赖;- 3、搭建本地
yum源- 4、配置客户端
yum,实现局域网取包安装。
- 实验过程
1、安装nginx,测试安装是否成功
先保留平常下载下来的
rpm包
sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
这样当我们yum安装软件的时候,文件就是被保存到/var/cache/yum/
安装依赖包
yum install -y pcre-devel openssl-devel
检查安装成功与否
rpm -qa pcre-devel openssl-devel
创建安装包所存放的目录
mkdir -p /server/tools
进入安装包所存放的目录
cd /server/tools
下载
/nginx-1.16.0压缩包
wget http://nginx.org/download/nginx-1.16.0.tar.gz
解压
nginx-1.16.0.tar.gz
tar xf nginx-1.16.0.tar.gz
进入
nginx-1.16.0目录
cd nginx-1.16.0/
创建软件存放目录
mkdir -p /application
配置
nginx
./configure --user=nginx --group=nginx --prefix=/application/nginx-1.16.0 --with-http_stub_status_module --with-http_ssl_module --with-pcre
编译安装
make && make install
做软连接
ln -s /application/nginx-1.16.0/ /application/nginx
添加
nginx用户
useradd -u 1010 -s /sbin/nologin -M nginx
启动
nginx进行测试
/application/nginx/sbin/nginx
检查是否启动成功
netstat -lntup|grep nginx
or
lsof -i:80
关闭
nginx为定制rpm包做准备:
pkill nginx
2、定制rpm包
安装
ruby模块
yum -y install ruby rubygems ruby-devel
检查安装成功与否
rpm -qa ruby rubygems ruby-devel
查看当前源:
gem source list
*** CURRENT SOURCES ***
https://rubygems.org/
添加国内源
gem sources -a http://mirrors.aliyun.com/rubygems/
移除国外源
gem sources --remove https://rubygems.org/
再次查看当前源:
gem source list
*** CURRENT SOURCES ***
http://mirrors.aliyun.com/rubygems/
安装
FPM工具
gem install fpm
FPM常用参数如下表所示
| FPM常用参数 | 说明 |
|---|---|
| -s | 指定源类型 |
| -t | 指定目标类型,即想要制作为什么包 |
| -n | 指定包的名字 |
| -v | 指定包的版本号 |
| -C | 指定打包的相对路径 |
| -d | 指定依赖于哪些包 |
| -f | 第二次包时目录下如果有同名安装包存在,则覆盖它 |
| -p | 输出的安装包的目录,不想放在当前目录下就需要指定 |
| --post-install | 软件包安装完成之后所要运行的脚本;同--offer-install |
| --pre-install | 软件包安装完成之前所要运行的脚本;同--before-install |
| --post-uninstall | 软件包卸载完成之后所要运行的脚本;同--offer-remove |
| --pre-uninstall | 软件包卸载完成之前所要运行的脚本;同—before-remove |
安装可能遇到的问题
- 1、遇到以下语法报错:
Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}
解决方法:
yum install -y rpm-build
- 2、如果里面有
gcc make的错误解决方法:
yum install -y gcc
创建
nginx的rpm包要执行的脚本
cat >/server/scripts/nginx_rpm.sh <<EOF
#!/bin/bash
useradd -u 1010 -M -s /sbin/nologin nginx
ln -s /application/nginx-1.16.0/ /application/nginx
EOF
通过
fpm命令打包rpm
fpm -s dir -t rpm -n nginx -v 1.16.0 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.16.0/
打包
rpm遇到问题:
No such file (for after_install): "/server/scripts/nginx_rpm.sh " {:level=>:error}
解决方法:对不起,请你手动敲一遍吧,它生气了,不让你复制粘贴
查看
rpm包信息
rpm -qpi nginx-1.16.0-1.x86_64.rpm
查看
rpm包内容
rpm -qpl nginx-1.16.0-1.x86_64.rpm
查看
rpm的包依赖
rpm -qpR nginx-1.16.0-1.x86_64.rpm
查看
rpm自带的执行脚本,执行脚本不是以文件的形式存在rpm包中
rpm -qp --scripts nginx-1.16.0-1.x86_64.rpm
3、搭建本地yum源
创建仓库目录
mkdir /application/yum/centos7/x86_64 -p
将生成的
nginx rpm包放到该目录
mv nginx-1.16.0-1.x86_64.rpm /application/yum/centos7/x86_64/
安装
createrepo
yum -y install createrepo
初始化
repodata索引文件
createrepo -pdo /application/yum/centos7/x86_64/ /application/yum/centos7/x86_64/
修改
nginx配置文件,让它默认访问浏览器找到/application/yum/centos7/x86_64/目录
cat >/application/nginx/conf/nginx.conf<<EOF
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /application/yum/centos7/x86_64/;
autoindex on; ##开启目录
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
EOF
检查
nginx配置文件
/application/nginx/sbin/nginx -t
启动 nginx
/application/nginx/sbin/nginx
将我们之前下载的所有的
rpm包都复制到本地yum仓库里
find /var/cache/yum/x86_64/7 -type f -name "*.rpm"|xargs -i cp {} /application/yum/centos7/x86_64
提示:每加入一个
rpm包就要执行一下如下命令,用来更新索引
createrepo --update /application/yum/centos7/x86_64/
4、配置客户端 yum ,实现局域网取包安装
配置客户端
cat > /etc/yum.repos.d/local.repo << eof
[local]
name=Server
baseurl=http://10.0.0.61
enable=1
gpgcheck=0
eof
yum操作、清除缓存、重新建立缓存
yum clean all
指定指定使用
local源,此命令重启linux系统失效, 这条命令中的local名称一定要对应local.repo中的[local]!
yum --enablerepo=local --disablerepo=base,extras,updates,epel list
安装
nginx,进行测试
yum install -y nginx
其他综合-搭建本地yum仓库及自制rpm包的更多相关文章
- 如何手工搭建本地Yum仓库
如何手工搭建本地Yum仓库(重点推荐) https://www.linuxidc.com/Linux/2016-09/135480.htm CentOS7.2 创建本地YUM源和局域网YUM源: h ...
- 搭建yum仓库与定制rpm包
笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 当我们自动化部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请 ...
- 自动化部署必备技能—部署yum仓库、定制rpm包
部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...
- CentOS7搭建本地YUM仓库,并定期同步阿里云源
CentOS7同步阿里云镜像rpm包并自建本地yum仓库 系统环境 # cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) # u ...
- 搭建本地YUM仓库
YUM介绍 yum(yellow dog updater modified)为多个Linux发行版的软件包管理工具,Redhat RHEL CentOS Fedora YUM主要用于自动安装,升级rp ...
- CentOS 7 搭建本地YUM仓库,并定期同步阿里云源
目录导航: 1. 系统环境 2. 修改yum 源为阿里云源 3. 安装yum相关的软件 4. 根据源标识同步源到本地目录 5. 安装nginx开启目录权限保证本地机器可以直接本地yum源 6. 客户端 ...
- 在VMware下通过挂载系统光盘搭建本地yum仓库的方法
一.虚拟机的安装 首先你要有一个VMware虚拟机,没有软件的朋友可以看我的前几篇博客 安装VMware虚拟机 二.进入虚拟机(在这里我们进入一个Linux虚拟机下的CentOS操作系统进行演示) 首 ...
- linux通过挂载系统光盘搭建本地yum仓库的方法
1.挂载光盘 [root@localhost ~]# mount /dev/cdrom /media/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载 /media下的cdrom ...
- 通过挂载系统光盘搭建本地yum仓库
1,配置本地yum源: 把系统光盘挂载到文件夹aaa(aaa为自己创建的文件夹). [root@localhost /]# mount dev/cdrom /aaa 2,修改yum配置文件: yum的 ...
随机推荐
- Oracle存储过程(包:PACK_KPI_KERNEL For YS三度评价体系)
CREATE OR REPLACE PACKAGE PACK_KPI_KERNEL IS --定义多级数组 字符串 TYPE TSTRARRY ) INDEX BY BINARY_INTEGER; T ...
- 蓝桥杯dfs搜索专题
2018激光样式 #include<bits/stdc++.h> using namespace std; /* dfs(i) 第i个激光机器 有两种选择:vis[i-1] == 0 时 ...
- 卷积核filter和kernal的区别
在一堆介绍卷积的帖子中,这篇特别之处在于很萌的示例配色,令人眼前一亮,当然直观也是很直观滴,保证了能在昏昏欲睡见周公子前看完. https://towardsdatascience.com/types ...
- luoguP4719 【模板】动态 DP
题意 我理解的动态DP: 发现DP可以写成矩阵的形式,因此用数据结构维护矩阵乘积. 对于这道题,显然有DP: \(f_{x,0/1}\)表示\(x\)的子树中,x选/不选的最大点独立集. \(f_{x ...
- xcode静态库调试
[工程1]:静态库工程,用来生成xxx.a [工程2]:项目工程,需要引入静态库xxx.a 工程2引入静态库的方法是将工程1生成的xxx.a和include头文件目录,加入到工程2中. 而如果需要在工 ...
- Gin框架 - 数据绑定和验证
概述 上篇文章分享了 Gin 框架使用 Logrus 进行日志记录,这篇文章分享 Gin 框架的数据绑定与验证. 有读者咨询我一个问题,如何让框架的运行日志不输出控制台? 解决方案: engine : ...
- 【Zabbix】zabora批量部署
zabora简化批量部署 目的:简化部署zabora,批量监控数据库的常用指标 1 数据库用户赋权 上传cre_arp_monitor.sh,并且部署用户. [root@oradb ~]# chown ...
- var和let区别简述
因为习惯用var声明变量,以至于ES6出了let来替代var,我依然继续用var,直到后来慢慢了解let之后,开始尝试使用 不同点: ①:var属于ES5规范,let属于ES6规范 ②: ...
- 使用 jQuery.TypeAhead 让文本框自动完成 (二)(访问远程数据)
项目地址:https://github.com/twitter/typeahead.js 直接贴代码了: @section headSection { <script type="te ...
- 【UOJ#61】【UR #5】怎样更有力气(最小生成树)
[UOJ#61][UR #5]怎样更有力气(最小生成树) 题面 UOJ 题解 最最最暴力的想法是把所有边给处理出来然后跑\(MST\). 考虑边权的情况,显然离线考虑,把么一天按照\(w_i\)进行排 ...