前言

之前往linux上安装一个软件,都是以压缩包或者压缩包+shell的方法,这每次安装,都是先scp到某个目录, 解压,安装......稍微厉害的,会写个shell脚本.但是还是达不到真正的快速方便安装.现在我们就介绍一种.run的软件包

Run软件包介绍

run 程序安装包实质上是一个安装脚本加要安装的程序,如下所示:

|—————–——|
|                        |
|     安装脚本       |
|                        |
|—————–——|
|                        |
|      程序            |
|                        |
|—————–——|

这样整个 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.tar.gz的压缩包, 这就是我们的安装包, 其次我们有一个test.shell的执行脚本
test.shell的内容:

 #!/bin/bash
lines=8 #这个值是指这个脚本的行数加 1,这个脚本共有 7 行
tail -n +$lines $0 >/tmp/test.tar.gz # $0 表示脚本本身,这个命令用来把从 $lines 开始的内容写入一个 /tmp 目录的 scan.tar.gz 文件里。
tar zxvf /tmp/test.tar.gz
cp test /usr/bin
rm test -f
exit 0

  温馨提示:1. lines = 8, 这个参数特别重要, 如果改脚本了, 一定要确认这个值是否正确.   2. 在脚本得最后一行一定要写exit 0. 不然程序执行时会执行test.tar.gz,会报错得.   3. 在脚本的最后一行, 一定要换行, 就是说exit 0 之后还有加一个空行.不然程序在链接得时候,会紧挨着exit 0 后面进行连接.分割时会出错.  这里说明一下用linux

连接脚本和压缩包

cat test.sh test.tar.gz > test.run

这样就得到了 test.run 文件,它的结构如下:
|—————–———| 第1行
|                            |
|         test.sh         |
|                              | 第7行
|—————–———|
|       test.tar.gz       | 第8行
|                               |
|—————–———| 结尾
在运行 test.run 时,运行到第 7 行的 exit 0 ,脚本就会自动退出了,不会去运行第 8 行以下的二进制数据(即 test.tar.gz 文件),这样 shell 就不会因为识别不了二进制数据而出错了。这里我们巧妙地使用了 tail 命令,把第 7 行以下的数据重新生成了一个 test.tar.gz文件,然后再执行安装。运行超级简单,使用 sh test.run 或赋予可执行权限然后直接执行 ./test.run 就可以安装了。

run 安装包制作较小的程序包是很好的选择,但是它也有缺点,做逻辑比较复杂的安装包,写的安装脚本将会很麻烦,因此此时还是用其他的安装包更好。

制作linux下的.run安装包的更多相关文章

  1. Linux下Tomcat,mysql安装包及教程整合,

      前段时间孔老师给了一个虚拟机,自己瞎捣鼓,装了Tomcat和mysql,捣鼓了好几天,把一些安装包和试过还不错的博客整理出来:  老师给的已经装好了Linux系统和JDK. Tomcat9安装包 ...

  2. 制作Linux下程序安装包——使用脚本打包bin、run等安装包

    制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了.一般这个后部分的文件是个压缩 包,那样,就能够打包很多文件了,在脚本中解压出来即可. ...

  3. Mac OS平台下应用程序安装包制作工具Packages的使用介绍(补充)

    上一篇:Mac OS平台下应用程序安装包制作工具Packages的使用介绍 补充说明 上一篇文章中介绍了如何使用Packages如何创建mac下的安装包.但是这样制作出来的安装包只能安装到系统的文件路 ...

  4. 如何在官网上下载Linux版本的MySQL安装包

    如何在官网上下载Linux版本的MySQL安装包 参考百度经验,<如何在官网上下载Linux版本的MySQL安装包> 原文链接:https://jingyan.baidu.com/arti ...

  5. 【Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包】

    原文:[Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包] 打开这两个地址,就能看到最新的安装包了.... http://www.jianshu.com/p/c67c14b3 ...

  6. Mac OS平台下应用程序安装包制作工具Packages的使用介绍

    一.介绍 Windows下面开发好的应用程序要进行分发时有很多打包工具可供选择,如Inno Setup, InstallShield, NSIS, Advanced Installer, Qt Ins ...

  7. Linux:获取Linux离线postgresql数据库安装包并部署

    获取离线安装包(方法一) 1. 进入官网:https://www.postgresql.org/ 2. 下载步骤 (1)点击Download (2) 选择安装的服务器的版本  (3)更新yum源 #更 ...

  8. Mac下获取AppStore安装包文件路径

    通过远在大洋彼岸的苹果服务器下载东西,确实有够慢啊!AppStore更甚:甚至都经常提示连不上服务器,而有些软件呢,还必须从AppStore下载安装,所以没办法,谁让上了苹果的贼船呢!公司的网速更是不 ...

  9. secureCRT安装,破解,连接linux机器(含安装包)

    1. 为什么需要安装secureCRT 我们的项目运行在服务器上,如果出现什么问题,或者升级的时候,需要对服务器进行操作,把处理好的项目发布到服务器上.如果我们就在服务器身边,那么直接在服务器上进行操 ...

随机推荐

  1. Django学习手册 - pycharm 安装/建立第一个网站hello world

    步骤阐述: 1.下载 pycharm 安装包,安装pycharm 2.打开pycharm软件,新建工程项目 3.新建APP,配置url,启动项目 步骤1: pycharm 官网下载: https:// ...

  2. MySql cmd下的学习笔记 —— 有关表的操作(对表中数据的增,删,改,查)

    (知识回顾) 连接数据库 mysql -uroot -p111 先建立一个新库 create database test1; use test1; 由于今天的主要内容是表的操作,建立表的详细过程不是本 ...

  3. RabbitMQ简单应用の消息持久化

    消息应答: 消息应答默认是打开的(false) boolean autoAck = true;自动确认模式,表示一旦MQ将消息给到消费者,就会从内存中删除该条消息,这种情况下,如果杀死正在执行的消费者 ...

  4. Spring @Bean注解 (基于java的容器注解)

    基于java的容器注解,意思就是使用Java代码以及一些注解,就可以取代spring 的 xml配置文件. 1-@Configuration & @Bean的配合 @Configuration ...

  5. sed 随笔

    1)sed 功能说明 sed     全称    stream editor    基本功能    增删改查    过滤    取行 语法格式: sed  [options]  [sed-comman ...

  6. 关于VC工程编译不过去这件事

    刚开始接触VC的时候,很大一部分时间是在对付编译链接错误,因为经验不足的原因,这些编译链接总让人很沮丧.比如: 1.fatal error LNK1104: 无法打开文件“LIBC.lib”错误 这个 ...

  7. Python os.removedirs() 和shutil.rmtree() 用于删除文件夹

    概述 os.removedirs() 方法用于递归删除目录.像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般 ...

  8. ubuntu14.04上引入thinkphp5类库遇到的一个问题

    ubuntu14.04 上加载OSS\OssClient() ;--->在vendor文件夹下的文件要用大写OSS 小写的报错 无法加载类库 Vendor('OSS.autoload');//引 ...

  9. 关于国产手机(含山寨机)的mrp格式文件使用

    目前国内的大多数国产手机(山寨机)均支持MRP格式软件,本文将教你如何测试或安装!(MRP格式游戏,是由[杭州斯凯网络科技有限公司]开发的一种轻量级的虚拟平台MINIJ平台格式文件,用标准的ANSI ...

  10. $Django 模板层(变量、过滤器 、标签)、自定义(模板过滤器,标签)

    1 模版语法之变量:详见源码  -{{ 变量 }}:******重要******{#相当于print了该变量#} {#只写函数名 相当于()执行了#}<p>函数:{{ test }}< ...