制作linux下的.run安装包
前⾔
之前往linux上安装⼀个软件,都是以压缩包或者压缩包+shell的⽅法,这每次安装,都是先scp到某个⽬录, 解压,安装......稍微厉害的,会写个shell脚本.但是还是达不到真正的快速⽅便安装.现在我们就介绍⼀种.run的软件包
Run软件包介绍
run 程序安装包实质上是⼀个安装脚本加要安装的程序,如下所⽰:
|—————–——|
| |
| 安装脚本 |
| |
|—————–——|
| |
shell最简单脚本| 程序 |
| |
|—————–——|
这样整个 run 安装包结构就⼀⽬了然了,实际上因为实际需要结构多少有点变动但这个⽆关紧要,只需要明⽩原理就⾏了。
它的结构是 shell +压缩包(当然也可以是其它⽂件)的格式,制作的时候⽤ cat 命令命令连接两个⽂件,头部是 shell 脚本⽂件(shell ⼀定要在前⾯)和压缩包同时重定向到另⼀个⽂件(Linux 中统⼀给后缀 run、bin 或 sh 给它,就是本⽂中说的 run ⽂件),⼀般这个后部分的⽂件是个压缩包,那样就能够打包很多⽂件了。运⾏的时候 shell 就可以⽤ Linux ⾥⾯的 tail 或 head 等命令很容易地把压缩包从 run ⽂件切分出来,后⾯的操作就跟 shell+压缩包的操作类似了,但这其中⽤户只需执⾏它就⾏,剩下的都是 shell ⾃⼰的操作了。这就是 Linux 那些 bin 、run 等安装脚本的简单制作了,对⽤户来说⾃动省事了很多。
与普通脚本相⽐,此类脚本多了⼀步从合并的⽂件中,提取出程序⽂件的过程。
安装⽂件的优点:
(1)只有⼀个包⽂件;
(2)可以直接运⾏在 Linux上,因为它是 sh(它的前半部分是sh);
(3)在 sh 中可以包含需要⽤户接收的协议信息,⽽且提⽰⽤户接收,如果⽤户不接收,安装退出。
制作run安装包
假如我们有⼀个的压缩包, 这就是我们的安装包, 其次我们有⼀个test.shell的执⾏脚本
test.shell的内容:
1 #!/bin/bash
2 lines=8 #这个值是指这个脚本的⾏数加 1,这个脚本共有 7 ⾏
3 tail -n +$lines $0 >/tmp/ # $0 表⽰脚本本⾝,这个命令⽤来把从 $lines 开始的内容写⼊⼀个 /tmp ⽬录的 ⽂件⾥。
4 tar zxvf /tmp/
5 cp test /usr/bin
6 rm test -f
7 exit 0
温馨提⽰:1. lines = 8, 这个参数特别重要, 如果改脚本了, ⼀定要确认这个值是否正确. 2. 在脚本得最后⼀⾏⼀定要写exit 0. 不然程序执⾏时会执⾏
,会报错得. 3. 在脚本的最后⼀⾏, ⼀定要换⾏, 就是说exit 0 之后还有加⼀个空⾏.不然程序在链接得时候,会紧挨着exit 0 后⾯进⾏连接.分割时会出错. 这⾥说明⼀下⽤linux
连接脚本和压缩包
cat test.sh > test.run
这样就得到了 test.run ⽂件,它的结构如下:
|—————–———| 第1⾏
| |
| test.sh |
| | 第7⾏
|—————–———|
| | 第8⾏
| |
|—————–———| 结尾
在运⾏ test.run 时,运⾏到第 7 ⾏的 exit 0 ,脚本就会⾃动退出了,不会去运⾏第 8 ⾏以下的⼆进制数据(即 ⽂件),这样 shell 就不会因为识别不了⼆进制数据⽽出错了。这⾥我们巧妙地使⽤了 tail 命令,把第 7 ⾏以下的数据重新⽣成了⼀个 ⽂件,然后再执⾏安装。运⾏超级简单,使⽤ sh test.run 或赋予可执⾏权限然后直接执⾏ ./test.run 就可以安装了。
run 安装包制作较⼩的程序包是很好的选择,但是它也有缺点,做逻辑⽐较复杂的安装包,写的安装脚本将会很⿇烦,因此此时还是⽤其他的安装包更好。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论