一键安装包是怎么编写的?
1.前言
突然想写一篇一键安装包编写的文章,其实不是想说要教谁怎么编写一键安装包,因为我没这能力,也没这技术,这里只是想分享自己编写LLNMP时的心得,以及若谁想自己尝试编写时,要如何入手?
2.需要的知识?
编写一键安装包其实就是编写shell脚本,而shell脚本是运行于linux平台的,所以必须要具备一定的linux基础和代码编写能力,至少得知道变量是什么?这句话是什么?
其实说白了,shell脚本就是一段代码,和php、asp什么的一样,某个单词代表什么意思,比如if代表如果,endif代表如果语句结束,而shell脚本语言对于安装包的编写来说,我们涉及的内容非常少,所以学习这部分内容甚至和学习html了解其意差不多容易,我们主要的是要关注linux的操作命令。
3.如何开头?
所谓万事开头难,既然已经具备了一定的知识,那么想要编写属于自己的一键安装包其实也就不是太困难了。
那么如何开始呢?咱们先把自己的安装过程缕一遍,把每一条命令记录下来,这就是编写的起始。
举个例子,比如我们要安装一个nginx,那么我们就要把安装的涉及到的所有除了登录SSH的命令全部记录下来,从卸载原有web服务器,再到安装依赖包最后到编译安装nginx、配置等,全部记录下来,这就是我们的开头。
4.如何编写?
把所有命令记录下来,我们就已经开了一个好头了,剩下的其实就是考虑一些应用性的问题了,比如,命令我们记录下来了,但是如何能够做到让其他朋友能够也顺利的安装上呢?毕竟不同的环境需要不同的操作。
好吧,咱们接着来,依然是刚才的nginx,命令记录下来了,那么从第一条开始,卸载原有web服务器,yum remove httpd* mysql* php*,是否有需要大众化的呢?没有?错了,有的!
我们需要编写的是无人值守一键安装包,不是互动型安装包,所以,我们需要把所有的需要等待输入的操作全部剔除,那么,是否应该在刚才那条命令里加上一个 -y 呢?
接下来是安装编译所需依赖包,同样的,咱们应该在yum中加上-y,避免出现等待输入!
接下来是下载并编译pcre以及nginx,这时我们就需要从下来开始考虑,下载后需要保存在哪里?咱们建立一个单独的目录来存放下载的文件,同时,下载时为了避免各种原因导致的文件名改变,我们应该在下载时指定-O参数来设置存放文件名。
文件下载下来了,也存放到咱们指定的目录中了,可以编译了吧?不!我们还需要解压缩,由于我们已经指定了存放文件名,所以解压缩时方便多了,安装指定格式执行指定的解压缩命令,解压缩前先在本地试试,看看解压缩出来的目录名是什么?然后在编写时我们进入目录就应该是进入的这个目录。
好了,现在简单了,运行./configure编译,需要配置参数的配置下参数,然后make,接着make install,就这么简单!
那么是不是代表我们就已经算是编写出了自己的安装包了呢?答案是差不多了!
5.注意事项
在安装过程中如果您原因,您也可以一直使用诸如cd /home/soft之类的命令来保证您的安装位置等不出错,不过也可以直接指定一个变量存储您的主路径,使用时直接调用。
您还需要在安装过程中对一些可能出现的情况进行判断,比如32位系统和64位系统,或者系统版本不同?或者某组件是否已经安装?您都需要考虑,这就需要使用到判断,使用判断来确定是否不同,若是则执行某一命令,若不是则执行另一条命令,只有这样才能达到自动适配,自动适应。
最后,脚本编写完了,我们所需要做的就是寻找到足够多的测试环境,搭配不同的系统版本,比如32位、64位、5版本、6版本等等,然后各自运行脚本,测试看看是否能够正常安装正常运行?若出错了,是什么环境下出了什么问题?应该怎样解决?
最后全部测试成功了,好了,您的脚本也算编写完成了,可以发布了!
6.最后的话
让大家失望了,这篇文章里并没有具体的代码,有的只是一个脚本的编写过程,以及一些需要考虑到的东西,这也是我的有感而发,曾经编写了LLNMP自信满满没怎么测试就发上来,结果错误百出,所以有了这一片文章~~
原文地址:http://shuang.ca/yi-jian-an-zhuang-bao-shi-zen-me-bian-xie-de/