zoukankan      html  css  js  c++  java
  • 制作linux下的.run安装包

    前言

    之前往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的内容:

    1 #!/bin/bash
    2 lines=8                                  #这个值是指这个脚本的行数加 1,这个脚本共有 7 行
    3 tail -n +$lines $0 >/tmp/test.tar.gz  # $0 表示脚本本身,这个命令用来把从 $lines 开始的内容写入一个 /tmp 目录的 scan.tar.gz 文件里。
    4 tar zxvf /tmp/test.tar.gz
    5 cp test /usr/bin
    6 rm test -f
    7 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 安装包制作较小的程序包是很好的选择,但是它也有缺点,做逻辑比较复杂的安装包,写的安装脚本将会很麻烦,因此此时还是用其他的安装包更好。

  • 相关阅读:
    Oracle学习笔记--Oracle启动过程归纳整理
    Oracle 11g rac开启归档
    Oracle 11g rac中关于crsctl stop cluster/crs/has的区别
    Linux环境下安装MySQL 5.7.28
    将root用户权限赋予普通用户
    用Navicat Premium 连接mysql数据库时报错 -- 1130 Host xxxx is not allowed to connect to this MySQL server
    PCoIP vs HDX (CITRIX ICA)远程访问协议对比
    systemctl
    组播查询命令
    默认路由ip default-network和ip route 0.0.0.0 0.0.0.0区别
  • 原文地址:https://www.cnblogs.com/shuiche/p/9323757.html
Copyright © 2011-2022 走看看