Linux二进制包管理工具-XBPS 0.7.2 发布

怎么着用 Bash 成立二个二进制发布包

Linux下安装JDK的时候,Sun集团为JDK6的linux版本提供了多个shell的安装包,用起来特其余好用,基本上和在Windows下安装软件没什么两样,shell文件推行之后,大约整个都系都设置好了,不用大家友好再初阶设置PATH和JAVA_HOME,不过贰个shell文件中是怎么着把二进制代码富含进来的呢?

再例如天猫为linux开采的天猫商城插件,其实也是四个shell文件,可是实践那么些shell文件从此,会设置相当多二进制的东西,同样的标题,Shell只是文件文件,在那之中的二进制是怎么来含有进来的呢?

从文本文件调换出可实践文件,通过编写翻译器把源程序编制程序成可试行程序当然是足以的,不过前边提到的哪二种情景都不是如此做的。原因有四个,第一对此大的类型以来,编写翻译供给的年月相比较长,处境比较复杂;第二,越发重大的是,那样抓实际和从源代码编写翻译程序没什么两样,对于不想让客户观看本身的源码的商业软件来讲,这明摆着是不可取的。

大家看看一般的次序是何许发布他们的二进制包的。

貌似的主次,无非是把二进制和须要的文书档案压缩到多个压缩文件中,然后经过README文书档案的解释程序的周转依赖什么样的只要,然后,你就能够把程序自行的活动到您想活动的地点去了。

多多时候,大家把程序嵌入任啥地点方都是能够运营的,可是程序可以运维,并非说大家曾经做到了前后相继的安装,比释迦牟尼佛讲,假使大家解压JDK的二进制包之后,直接把程序移动到一个地点,然后把相应的bin目录增多到PATH中就足以实行JDK提供的一多种工具了。

不过假诺大家设置任何的重视与JDK的顺序的时候,比方TOMCAT,那么就能有标题。因为大家只是在PATH中参加了JDK的bin目录而尚未拟订JAVA_HOME那几个情形变量,所以TOMCAT很可能会不能运作。

再举例大家利用man命令来查阅三个前后相继的手册,一般情形下二进制包中也会满含man文书档案的,可是只要大家只是把解压的二进制包的路径加多到了PATH中,还不可能在man中找到呼应的文书档案。

也多亏因为那样的来头呢,所以众多的二进制包的透露是采用deb或然rpm包来公布。安装的时候少了好多的烦心。要制做deb只怕rpm包当然是索要学习花费的,并且deb和rpm也只可以在对应的linux发行版中应用,如若想要为全部的Linux发行版都提供三个安装文件,那么使用shell文件来坚实实在在是最棒的秘诀。

图片 1

Shell的就学习开销用低,何况对linux平台来讲有通用,那么是怎么着落成的吗?

思索大家在手动安装的情景,无非是把减掉的二进制包解压,移动到一定的目录下,在PATH变量中增多二进制包的可试行文件的路线等等工作。首先大家把二进制包压缩文件和shell文件分别。那样一来,shell中只要做到解压,然后把解压后的目录移动到钦命的目录中去,设置丰富多彩的景况变量然后就到位了办事了。

唯独大家在哪些把压缩文件和这一个shell解压之后要进行的一声令下的shell文件一齐停放二个shell文件中呢?

要完成那或多或少,首先那一个shell文件中,要有能够解压的二进制内容,其次,那么些shell要做的办事正是,把二进制内容,解压,然后把本来手动做的劳作在这几个shell中用命令实现。再用shell写个脚本达成部分手动达成的专业,这些职务相比较易于,所以制作shell安装包的难题正是何许在里面蕴涵二进制内容了。

如何在贰个文件文件中著录二进制的剧情呢?

以此主题素材一度被消除了。答案正是选拔Base64编码。在linux下就有base64
这么些命令程序正是来做这一个工作的。base64可以把公文进行base64的编码,输出的正式输出中去依然把公文中的Base64编码的原委解码。命令base64除了能够对文件的内容做Base64的编解码外,也得以对专门的工作输入中的数据开展Base64编辑码。

有了这么些准备的学识,那么大家就足以看看现实的怎样来做shell的二进制公布包了。

先是倘若我们要表露的公文都放在名叫test的目前文书档案中。

  1. 把要宣布的文本打包

    1. tar zcf test.tar./test
  2. 对打好的二进制包做Base64编码

    1. base64 ./test.tar> test_base64.txt
  3. 预备安装文件的shell文件

    1. test_base64="";#test_base64中的所有内容
    2. echo $test_base64|base64 -d >test.tar
    3. tar zxf test.tar
    4. rmtest.tar
    5. #其他的安装代码

写到这里,大家早就把道理将理解了。可是能够能够写三个shell程序,特地来生成那样的文告包软件呢?当然能够。上面是自家写的那一个包裹程序的源代码。

  1. function mkpackage(){
  2. target_dir=$1
  3. felow_install_shell_command_file=$2
  4. echo"tar -zcf ._test_dir.tar.gz $target_dir"
  5. tar-zcf ._test_dir.tar.gz $target_dir
  6. base64 ._test_dir.tar.gz >._base64
  7. rm._test_dir.tar.gz
  8. printf"test_base64=\"">install.sh
  9. while IFS='' read -r line ||[[-n "$line"]];do
  10. printf"$line\\">>install.sh
  11. printf"n">>install.sh
  12. done<./._base64
  13. rm._base64
  14. echo"\"">>install.sh
  15. echo'printf $test_base64|base64 -d >._temp.tar.gz;'>>install.sh
  16. echo'tar zxf ._temp.tar.gz'>> install.sh
  17. echo'rm ._temp.tar.gz'>>install.sh
  18. if[[-e $fellow_install_shell_command_file ]];then
  19. cat $fellow_install_shell_command_file >>install.sh
  20. fi
  21. chmod+x install.sh
  22. }
  23. function usage(){
  24. echo"usage:"
  25. echo" $1 test_dir [the_command.sh]"
  26. }
  27. if[[ $#!=0]]
  28. then
  29. mkpackage $1 $2
  30. else
  31. usage $0
  32. fi

其一顺序接受多个输入参数,第贰个象征要打客车前后相继包目录,首个是解压后,安装动作的shell脚本文件。最终这一个程序生成二个名为install.sh 的文件。推行 install.sh
之后,会率先得到加压的程序包内容,然后实践首个参数钦赐的 shell
脚本的内容。那样我们就做了用Shell公布二进制文件的贰个卷入程序。当然了,在最终颁发在此以前,还亟需把那几个shell压缩一下。以便排除因为Base64编码而带来的公文长度的变大的熏陶。

正文永世更新链接地址:

Bash 创立一个二进制发表包
Linux下安装JDK的时候,Sun集团为JDK6的linux版本提供了二个shell的安装包,用起来特别的好用,基本上和在…

linux下安装JDK的时候,Sun公司为JDK6的linux版本提供了三个shell的安装包,用起来非常的好用,基本上和在Windows下安装软件没什么两样,shell文件实施之后,大约全体都系都安装好了,不用大家友好再动手设置PATH和JAVA_HOME,可是三个shell文件中是哪些把二进制代码包涵进来的吗?

X Binary Package System (简称XBPS)
是二进制包管理工科具,特点是火速、易用、成效丰富和可移植。

小编的myeclipse怎么开创工程都成二进制包了 未有src包了
自己就导入了三个mybatis框架工程
全部文件工程都乱了图片 2图片 3

再例如说Tmall为linux开荒的天猫插件,其实也是一个shell文件,不过举办那个shell文件从此,会设置比相当多二进制的东西,同样的难点,Shell只是文件文件,个中的二进制是怎么来含有进来的啊?

该版本修复了 libxbps模块和客商端一些内存泄漏的难点。

从文本文件调换出可试行文件,通过编译器把源程序编制程序成可实践程序当然是足以的,不过前边提到的哪二种境况都不是那样做的。原因有五个,第一对此大的项目以来,编写翻译要求的年华相比较长,情状比较复杂;第二,特别关键的是,这样压实际和从源代码编写翻译程序没什么两样,对于不想让客户阅览本身的源码的商业软件来讲,那显著是不可取的。

下载地址请点这里

我们看看一般的主次是什么公布他们的二进制包的。一般的次序,无非是把二进制和必备的文书档案压缩到三个压缩文件中,然后经过README文书档案的解释程序的运作依赖什么样的譬喻,然后,你就足以把程序自行的移动到您想移动的地点去了。比非常多时候,我们把程序嵌入任啥地点方都以足以运作的,可是程序能够运转,并非说我们早已实现了前后相继的装置,举例来讲,倘诺我们解压JDK的二进制包之后,直接把程序移动到一个地点,然后把相应的bin目录增加到PATH中就足以试行JDK提供的一种类工具了。不过只要大家设置其余的依赖性与JDK的次第的时候,比方TOMCAT,那么就能反常。因为大家只是在PATH中步向了JDK的bin目录而从未制订JAVA_HOME那几个处境变量,所以TOMCAT很或然会不能够运作。再比如说大家选拔man命令来查阅三个程序的手册,一般景观下二进制包中也会蕴藏man文书档案的,可是借使大家只是把解压的二进制包的不二等秘书诀增加到了PATH中,还不可能在man中找到呼应的文书档案。也多亏因为如此的缘故吗,所以广大的二进制包的发表是应用deb大概rpm包来发表。安装的时候少了无数的干扰。要制做deb或然rpm包当然是亟需学习开销的,何况deb和rpm也只还好对应的linux发行版中央银行使,假诺想要为具有的Linux发行版都提供一个安装文件,那么使用shell文件来抓牢实在在是最佳的艺术。

图片 4

Shell的上学开销低,而且对linux平台来讲有通用,那么是哪些变成的吧?

商讨我们在手动安装的动静,无非是把减掉的二进制包解压,移动到特定的目录下,在PATH变量中加多二进制包的可实施文件的门道等等职业。首先大家把二进制包压缩文件和shell文件分别。那样一来,shell中一旦产生解压,然后把解压后的目录移动到钦定的目录中去,设置精彩纷呈标境况变量然后就达成了专门的学问了。不过大家在哪些把压缩文件和这么些shell解压之后要奉行的一声令下的shell文件一齐放到多个shell文件中呢?要到位这或多或少,首先这一个shell文件中,要有能够解压的二进制内容,其次,那一个shell要做的干活就是,把二进制内容,解压,然后把原来手动做的做事在这一个shell中用命令完毕。在用shell写个脚本完毕都部队分手动达成的行事,那么些任务比较易于,所以制作shell安装包的困难就是哪些在当中累积二进制内容了。怎么着在三个文本文件中著录二进制的内容吗?那么些主题材料已经被消除了。答案正是选取Base64编码。在linux下就有base64
那几个命令程序正是来做那些职业的。base64能够把公文实行base64的编码,输出的正经输出中去依旧把文件中的Base64编码的原委解码。命令base64除了能够对文本的内容做Base64的编解码外,也能够对专门的学问输入中的数据开展Base64编辑码。有了这么些筹算的知识,那么大家就能够看看实际的怎么样来做shell的二进制公布包了。

先是假使大家要发布的公文都位于名叫test的当前文书档案中。

  1. 把要表露的公文打包

    tar zcf test.tar ./test
    
  2. 对打好的二进制包做Base64编码

    base64 ./test.tar > test_base64.txt
    
  3. 筹算安装文件的shell文件

    test_base64="";#test_base64中的所有内容
    echo $test_base64|base64 -d >test.tar
    tar zxf test.tar 
    rm test.tar
    # 其他的安装代码
    

写到这里,大家早就把道理将明了了。可是能够能够写叁个shell程序,特意来生成这么的揭穿包软件呢?当然能够。上边是本人写的那么些包裹程序的源代码。

function mkpackage(){
    target_dir=$1
    felow_install_shell_command_file=$2
    echo "tar -zcf ._test_dir.tar.gz $target_dir" 
    tar -zcf ._test_dir.tar.gz $target_dir
    base64 ._test_dir.tar.gz >._base64
    rm ._test_dir.tar.gz
    printf "test_base64=\"">install.sh
    while IFS='' read -r line || [[ -n "$line" ]]; do
    printf "$line\\" >>install.sh
    printf "n" >>install.sh
    done <./._base64
    rm ._base64
    echo "\"" >>install.sh
    echo 'printf $test_base64|base64 -d >._temp.tar.gz;'>>install.sh
    echo 'tar zxf ._temp.tar.gz' >> install.sh
    echo 'rm ._temp.tar.gz' >>install.sh
    if [[ -e $fellow_install_shell_command_file ]]; then
        cat $fellow_install_shell_command_file >>install.sh
    fi
    chmod +x install.sh
}
function usage(){
   echo "usage:"
   echo "    $1 test_dir [the_command.sh]"
}
if [[ $# != 0 ]]
then
    mkpackage $1 $2
else
   usage $0
fi

其一顺序接受三个输入参数,第多个象征要打大巴次序包目录,第贰个是解压后,安装动作的shell脚本文件。最终这几个程序生成二个名字为install.sh 的文书。推行 install.sh
之后,会率先获得加压的前后相继包内容,然后执行第叁个参数钦点的 shell
脚本的源委。那样大家就做了用Shell发表二进制文件的贰个包装程序。当然了,在最终颁发在此以前,还亟需把那个shell压缩一下。以便排除因为Base64编码而带来的公文长度的变大的熏陶。

相关文章