一 Linux安装文件

Linux常见的安装为tar,zip,gz,rpm,deb,bin等。我们可以简单的分为三类,

第一:打包或压缩文件tar,zip,gz等,一般解压后即可,或者解压后运行sh文件;

第二:对应的有管理工具的deb,rpm等,通常的这类安装文件可以通过第三方的命令行或UI来简单的安装,例如Ubuntu中的apt来安装deb,Redhat中的yum来安装rpm;

第三:像.bin类,其实就是把sh和zip打包为bin,或把sh和rpm打包为bin等,当在命令行运行bin安装文件时,其实就是bin里面的sh来解压bin中的zip或安装rpm的过程;

二 .bin安装文件

.bin安装文件可以认为是sh文件和zip或rpm等其他安装文件的打包形式。如下图:

.bin安装文件的优点:

1)只有一个包即.bin文件;

2)可以直接运行在Linux上,因为他是sh(他的前半部分是sh);

3)在sh中可以包含需要用户接收的协议信息,而且提示用户接收,如果用户不接收,安装退出;

三 .bin安装文件执行

1)超级简单: sh xxxx.bin 或直接xxxx.bin。

2)过程如下:

四 .bin安装文件制作

1) 组成之sh文件(例子:YYYY.bin)


#!/bin/sh
PATH=/usr/bin:/bin
umask 022
echo_args="-e "
localinstall=$1
more <<"EOF"
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxx
EOF
agreed=
while [ x$agreed = x ]; do
    echo
    echo "Do you agree to the above license terms? [yes or no] "
    read reply leftover
    case $reply in
    y* | Y*)
        agreed=1;;
    n* | N*)
    echo "If you don't agree to the license you can't install this software";
    exit 1;;
    esac
done
if [ -d "$localinstall" ] ; then
    outname=$localinstall/OUTNAME
else
    outname=OUTNAME
fi
echo "Unpacking..."
tail -n +AAA $0 > $outname    
if [ -x /usr/bin/sum ] ; then
    echo "Checksumming..."     sum=`/usr/bin/sum $outname`
    index=1
    for s in $sum
    do
    case $index in
    1)  sum1=$s;
        index=2;
        ;;
    2)  sum2=$s;
        index=3;
        ;;
    esac
    done
    if [ $sum1 != SUM1 -o $sum2 != SUM2 ] ; then
    echo "The download file appears to be corrupted."
    echo "Please do not attempt to install this archive file."
    exit 1
    fi
else    echo "Can't find /usr/bin/sum to do checksum.  Continuing anyway."fiecho "Done."exit 0

#此文件YYYY.bin可以重复使用,OUTNAME,SUM1,SUM2均为标识符,表示要打包到bin中的zip,rpm的路径,sum的checksum和filesize。

#用户协议处:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxx

#tail -n +AAA $0 > $outname,AAA为此sh文件的line count, 此命令即把bin中的sh后面的zip或rpm提取出来 ;

# sum用来检测所提取的zip或rpm文件是否正确;

#最后一定要exit 0,一定要。
#也可以在退出前云新unzip或rpm来安装,或者由用户自行来安装zip或rpm。

2)组成之zip,gz或rpm (例子:XXXX.rpm)

这个就是你要安装的zip或rpm。

3)创建bin安装文件的脚本sh(例子:createbin.sh,使用上面的YYYY.sh和XXXX.rpm)


#!/bin/sh

PATH=.:$PATH
RPM=XXXX.rpm
LICENSEBIN=YYYY.bin
BASE=$(basename $RPM .rpm)
sum=`sum $RPM`
index=1
for s in $sum
do
  case $index in
    1) sum1=$s;
       index=2;
       ;;
    2) sum2=$s;
       index=3;
       ;;
  esac
done
cat $LICENSEBIN | sed -e s/OUTNAME/$RPM/ -e s/SUM1/$sum1/ -e s/SUM2/$sum2/ > linux_license_new.bin
dos2unix -k -q linux_license_new.bin
cat linux_license_new.bin $RPM > ${BASE}-rpm.bin
sudo chmod a+x res/${BASE}-rpm.bin

# dos2unix 确保license shell为linux格式;

#且此shell文件需要在Linux上执行;

五 参考:http://itboba.com/taxonomy/term/1015

完!

linux bin文件制作的更多相关文章

  1. 记linux下rm误删bin文件的解决方式

    平常有个坏习惯,删文件为了快点,喜欢用rm xx*,删除一些关键词文件.今天为了删/bin下几个含有mix关键词的文件,使用命令rm mix*.手贱,mix和*之间多了个空格...灾难发生了!bin下 ...

  2. Linux 命令安装bin文件

    Linux 命令安装bin文件 安装命令: //1,增加文件的可执行权限 chmod a+x jdk-6u30-linux-x64.bin //2,程序即安装在执行命令的文件夹下 ./jdk-6u30 ...

  3. 【Linux开发】【DSP开发】利用CCS6.1生成out文件的同时生成bin文件

    [Linux开发][DSP开发]利用CCS6.1生成out文件的同时生成bin文件 标签:[DSP开发] [Linux开发] 尝试在windows上安装的CCS6.1开发AM4378-Linux下的应 ...

  4. Linux 下如何安装 .bin 文件

    拿到 .bin 文件,在文件所在目录下执行如下命令即可安装, ./your-file-name.bin 如果提示 “没有那个文件或目录” ,给它加上执行权限即可,执行如下命令, chmod +x ./ ...

  5. linux使用bin文件安装jdk

    jdk1.6.20文件为bin文件安装过程如下 添加执行权限 chmod +x jdk-6u20-linux-x64.bin 运行,出现提示需要输入yes ./jdk-6u20-linux-x64.b ...

  6. flash文件制作笔记

    在uboot串口台输入printenv 可以分区以及其他信息,如下 hisilicon # printenv bootdelay=1baudrate=115200ethaddr=00:00:23:34 ...

  7. Linux 最小系统制作

    Linux 最小系统制作 一.制作工具Busybox 在制作文件系统的时候,我们需要使用“Busybox 工具”,即为附件压缩包“busybox-1.21.1.tar.bz2”.“BusyBox 工具 ...

  8. 编译linux kernel及制作initrd ( by quqi99 )

    编译linux kernel及制作initrd ( by quqi99 ) 作者:张华  发表于:2013-01-27    ( http://blog.csdn.net/quqi99 ) 运行一个l ...

  9. 使用ISO文件制作openstack使用的coreOS镜像

    OpenStack源码交流群: 538850354 本篇文章是使用coreOS ISO文件手动制作openstack使用的qcow2镜像文件,关于coreOS的介绍,可以看这里 使用服务器:cento ...

随机推荐

  1. UILocalNotification本地通知

    // 执行通知一定要退出应用或挂起应用(进入后台)才能收到通知. 1.在iOS8及其以后版本中使用本地消息需要先获得用户的许可,否则无法成功注册本地消息.因此,我们将询问用户许可的代码片段添加到了ap ...

  2. IDEA如何打包可运行jar的一个问题。

    转自http://bglmmz.iteye.com/blog/2058785 背景: 有时候,我们会用IDEA来开发一些小工具,需要打成可运行的JAR包:或者某些项目不是WEB应用,纯粹是后台应用,发 ...

  3. UIcollectionView的使用(首页的搭建3)

    2.4 数据统计cell 2.4.1 创建cell,继承自UICollectionViewcell 2.4.2导入详情头文件并且创建详情view 2.4.2.1创建详情view,继承自uiview,定 ...

  4. easyui源码翻译1.32--DateTimeBox(日期时间输入框)

    前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 和日期输入框类似,日期时间输入框允许用户选择日期和指定 ...

  5. easyui源码翻译1.32--Dialog(对话框窗口)

    前言 扩展自$.fn.window.defaults.使用$.fn.dialog.defaults重写默认值对象.下载该插件翻译源码 该对话框是一种特殊类型的窗口,它在顶部有一个工具栏,在底部有一个按 ...

  6. spin_lock & mutex_lock的区别?

    http://blog.csdn.net/sunnytina/article/details/7615520   为什么需要内核锁? 多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是 ...

  7. 10行Python代码解决约瑟夫环(模拟)

    http://blog.csdn.net/dengyaolongacmblog/article/details/39208675 #!/usr/bin/env python # coding: utf ...

  8. ANDROID_MARS学习笔记_S02_008_ANIMATION第二种使用方式:xml

    一.简介 二.代码1.res\anim下的xml(1)alpha.xml.xml <?xml version="1.0" encoding="utf-8" ...

  9. Protel封装库

    一.目录下面的一些封装库中,根据元件的不同封装我们将其封装分为二大类:一类是分立元件的封装,一类是集成电路元件的封装 1.分立元件类: 电容:电容分普通电容和贴片电容: 普通电容在Miscellane ...

  10. 【Linux远程管理】Telnet远程连接管理

    Telnet,命令行界面下的远程管理工具,因为其历史非常悠久,几乎所有的操作系统都有该工具, 但是,Telnet在传输数据是是通过明文传输的,没有加密,所以现在几乎不会使用Telnet进行管理了. ( ...