文章总览:制作Centos7自动安装镜像

RPM安装包制作

Linux镜像的标准安装方式是将待安装的软件制作成RPM包,然后将RPM包解压并复制到指定的目录中去(据说除此之外还可以将带安装的软件做成tar包,直接用来做安装。关于如果把tar包做到镜像里面来实现自动安装,这个我还没有尝试。有机会尝试话再完善一下这篇文章)。

鉴于我们项目的情况,一开始只考虑把开发出来的JAVA应用制作成RPM包。但是后来,在实际制作的时候发现,除了JAVA应用之外,我们还有一些配置文件如 /etc/profile /etc/my.cnf /etc/rc.d/rc.local 这些系统文件,我们也做了修改。为了能让这些配置文件也能做到自动化安装,我们另外制作了一个RPM包,将这些配置文件也做成RPM包,然后装到一个指定的位置,然后再用ks.cfg的post脚本复制到系统路径下覆盖系统的配置文件,从而实现自动安装。

至于为什么不直接安装到系统路径下? 那是由于我尝试过一次,结果得到了一个错误:安装冲突。估计是不允许直接在安装过程中覆盖系统文件吧。 所以只能采用迂回的方式:先装到别的位置,然后在复制到目标路径下。

废话不多说了,开始整体。

1. 安装制作工具

制作RPM包,需要安装RPM包制作的安装工具,通常是两个,使用yum方式安装 yum -y install rpm-build rpmdevtools

2.初始化目录

安装完RPM工具之后,直接执行 rpmdev-setuptree 这个命令(我用的是root用户),执行完成之后,在/root/下面会建立一个 rpmbuild的目录, 在这几个目录下面会有如下的子目录,其中几个我们后续要用到:

3.准备安装包的内容

按照以下的方式准备安装包:

1.建立一个目录,带上版本号

如果,你打算安装的应用叫做 DeviceController-1.0.0 ,就创建一个目录叫做DeviceController-1.0.0

2.将要安装的内容全部copy到DeviceController-1.0.0目录下

假设我们的应用,包含一个 deviceController-1.0.0-Release.jar  一个 config 目录  一个 run.sh 以及一个 data目录, 则需要按照安装后的目录结构复制到DeviceController-1.0.0目录下

3. 准备makefile文件

在DeviceController-1.0.0目录下,创建一个makefile文件,内容如下:

install: mkdir -p ${RPM_BUILD_ROOT}/opt/wedo/deviceController/cp deviceController-1.0.0-relese.jar ${RPM_BUILD_ROOT}/opt/wedo/deviceController/deviceController-1.0.0-relese.jar cp -r config ${RPM_BUILD_ROOT}/opt/wedo/deviceController/configcp -r data ${RPM_BUILD_ROOT}/opt/wedo/deviceController/datacp run.sh ${RPM_BUILD_ROOT}/opt/wedo/deviceController/run.sh

注意:针对目录要用 -r 复制, mkdir 要加上-p 保证能够建立多级目录, ${RPM_BUILD_ROOT}是必须的

另外提醒大家一下,install: 后面需要有一个空格,然后再回车,另外每一行前面需要有一个tab作为命令的开始(这些都是makefile的规则,只是在提醒一下大家)

4. 制作source tar.gz包

以上都准备完成之后,回到DeviceController-1.0.0的上级目录,输入如下命令:

tar cvf DeviceController.tar DeviceController.tar-1.0.0;gzip DeviceController.tar.tar

注意中间的DeviceController-1.0.0 要和目录名一致

5.复制source安装包

执行上述命令之后,你将会得到一个叫做DeviceController.tar.gz的文件,将这个文件cp到 /root/rpmbuild/SOURCES/ 目录下

6.制作SPCE文件

进入/root/rpmbuild/SPECS目录下,编制DeviceController.spec文件,文件内容如下:

%global __os_install_post %{nil}
Name:       controller-rpm
Version:    1.0.0
Release:    1
Summary:    DEVICE-CONTROLLERGroup:     DEVICE
License:    WEDO
Source0:    DeviceController.tar.gz%description%prep
%setup -q%build%install
make install%files
%defattr(-,root,root)
/opt/wedo/deviceController/deviceController-1.0.0-release.jar
/opt/wedo/deviceController/config
/opt/wedo/deviceController/run.sh
/opt/wedo/deviceController/data%changelog%define __debug_install_post   \%{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}

注意: 关于这段代码,有几点说明:

1.%global __os_install_post %{nil}

这是一个可选的参数,主要的目的是通知RPM构建程序不要对 二进制文件进行压缩。 设置这个参数的目的是,我们的jar为了防止被人篡改,进行了加密。在运行的时候会进行加密校验。而RPM默认会对源文件中的二进制文件进行二次压缩。 结果就是通过rpm安装之后,得到的jar包的尺寸和原始文件不一致,从而导致加密校验失败。 所以我们加上了这个参数,保证rpm不会再对二进制文件进行压缩。 当然,如果你没有这方面的需求的话,可以不需要加入此参数。 关于rpm的一些参数,可以参考 Disable Binary stripping in rpmbuild 这篇文章

2. 保持 NAME VERSION 与你的原始目录中的信息一致

3.%files 段 描述的是你打算把你的文件安装到那个目标路径下的,文件名和原始目录一致。文件数量也需要保持一致。可以少,不能多。

7.构建RPM文件

完成以上操作之后,执行构建命令(在/root/rpmbuild/SPECS目录下执行):

rpmbuil -bb DeviceController.spec

执行完成后,你将会在/root/rpmbuild/RPMS/x86_64 下得到你的安装包(注意x86_64取决于你操作系统的CPU架构,未必都是这个名字)

制作Centos7自动安装镜像(二)相关推荐

  1. 制作Centos7自动安装镜像(四)

    文章总览:制作Centos7自动安装镜像 通过kickstart软件,我们已经有了一个初始化的ks.cfg脚本了.下面要做的就是在这个脚本上添加上我们要加入的内容. 在此处做一些背景说明.虽然我前面的 ...

  2. 制作Centos7自动安装镜像(五)

    文章总览:制作Centos7自动安装镜像 终于进入到最后的阶段了,这也是这个阶段最为复杂的一步了. 我们来逐步完善吧: 1. 同步系统安装包 建立一个目录,用于制作安装包,我建立的目录是/root/k ...

  3. 制作Centos7自动安装镜像(三)

    文章总览:制作Centos7自动安装镜像 在这里说明一下,我们制作自动化安装镜像用的是linux的kickstart技术. 这个技术的核心是制作一个ks.cfg文件,将所有需要自动化安装的内容写成一个 ...

  4. 制作光盘安装linux系统教程,在Windows上制作CentOS自动安装的光盘的教程

    1 复制光盘文件 1)挂载iso镜像 创建目录用于挂载光盘: 复制代码代码如下: mkdir /root/centos7 挂载iso镜像 复制代码代码如下: mount -o loop CentOS- ...

  5. linux制作windows光盘,在Windows上制作CentOS自动安装的光盘的教程分享

    1 复制光盘文件 1)挂载iso镜像 创建目录用于挂载光盘: 代码如下: mkdir /root/centos7 挂载iso镜像 代码如下: mount -o loop CentOS-7.0-1406 ...

  6. centos7内核默认包含在操作系统镜像中_定制centos7.7安装镜像默认内核5.5去除默认3.10内核

    镜像定制内容: 定制镜像内容 基于官方镜像minimal版定制 禁用自带的 nouveau nvidia驱动(Linux安装显卡驱动免重启即时生效),为自动化部署脚本提供便携. 检查方式: [root ...

  7. linux 镜像自动安装,制作能自动安装的CentOS镜像文件

    FILE=\'/root/packages.txt\' DEST_DIR=\'/root/iso/CentOS\' SRC_DIR=\'/media/cdrom/CentOS\' While  rea ...

  8. vm 永久有效 centos7 快速安装镜像,免去图形装机步骤

    文章目录 镜像已经完成了装机 提取链接 使用 镜像描述 centos7 免去图形装机步骤 无开机密码 ssh密码 u:root p: root 默认启动 sshd 关闭所有防火墙 默认开启 第一块 网 ...

  9. linux自动安装光盘,Linux(centos6.4)自动安装光盘制作

    一.为什么要制作Linux自动安装光盘 1.机房的服务器少则几十台,多则上百台,几千台,安装的时候,这么多的服务器不可能一台一台的安装,这时候就需要自动安装光盘的协助. 2.如果机房的某台服务器需要格 ...

最新文章

  1. 什么是词向量?word2vec、Glove、FastText分别是什么?
  2. 微信小程序开发简易计算器改进版
  3. 学计算机科学与技术的专业特长,计算机科学与技术专业简历范文介绍
  4. 吴恩达 ML作业提交:Grader sent no response
  5. 使用VS2017编译sqlite和在VS2017中配置使用sqlite的简单例子演示
  6. Ubuntu下的NBD和iscsi挂载
  7. 如何选择开源许可证?(Z)
  8. 有序序列中的i个最大数(算法导论思考题9-1)
  9. easypoi list中的map导出_如何优雅的导出 Excel
  10. 【Scala】Scala的安装以及创建Scala项目的详细步骤
  11. 21-hadoop-weibo推送广告
  12. 【SpringBoot】解决拦截器注入 Service 为空问题
  13. sql for循环_【赵强老师】什么是PL/SQL?
  14. 浅析微信支付:1前篇大纲
  15. 17、关于hibernate的N+1问题
  16. 数据库mysql5.7 sqlyog的安装
  17. 分享Word如何转PDF的方法,还不快来看看
  18. 2021年物联网设备CVE天梯榜
  19. Error querying database. Cause: java.sql.SQLException: ORA-01008: 并非所有变量都已绑定
  20. ZYNQ-定时器中断使用

热门文章

  1. BZOJ5341[Ctsc2018]暴力写挂——边分治+虚树+树形DP
  2. mysql学习总结-初识+数据管理+增删改查+常用函数+事务理解+数据库设计+JDBC引入
  3. messageBox的入门学习
  4. 阅读笔记《CKF滤波算法及其在航天器自主导航中的应用》
  5. Java项目:SSM网上外卖订餐管理系统
  6. 前嗅ForeSpider教程:网站登录配置 1
  7. 360搜索引擎so自动收录php改写方案——适合phpcms等cms
  8. matlab 二次最优控制,基于MATLAB的线性二次型最优控制
  9. JAVALM美食推荐网计算机毕业设计Mybatis+系统+数据库+调试部署
  10. Nginx和Apache和Tomcat的区别及优缺点