使用makeself创建安装文件
Makeself.sh是一个小的Shell脚本。用于从一个文件夹中生成自解压的tar.gz压缩包。
结果文件以一个shell脚本显示(大多数以.run作为后缀名)。能够自己主动执行。该文档会解压自己到一个暂时文件夹,而且执行一个可选的随意命令(比如:一个安装脚本)。它很类似于Windows中的Winzip自解压生成的文件。Makeself文档也包含校验和用于集成子验证(CRC或MD5校验和)。
Makeself.sh脚本自身仅仅用于从文件文件夹中创建一个的文档。生成的文档实际上是一个压缩(使用gzip,bzip2或压缩)TAR文件。在文件的開始增加一小段Shell脚本。这是一个小的Stub脚本,用于执行解压文件,执行嵌入命令和删除暂时文件。
为了安装包括在该文档中的软件。用户仅仅须要执行“文档”,比如:sh nice-software.rum。
我推荐这些文件使用“run”或“sh”作为后缀。不要迷惑用户,由于他们知道它实际上是一个Shell脚本。它后面带有相当多的二进制数据。
从2.1開始,makeself已经重写过,在以下的平台上进行測试:
1. Linux(全部发行版)
2. Sun Solaris(8以上版本号)
3. HP-UX(HPPA RISC上的11.0和11i)
4. SCO OpenUnix和OpenServer
5. IBM AIX 5.1L
6 MacOS X(Dario)
7. SG IRIX 6.5
8. FreeBSD
9. UnicOS/Cray
10.Cygwin(Windows)
主页(当前最新版本号2.2.0):
https://github.com/megastep/makeself
源码下载:
https://github.com/megastep/makeself/archive/release-2.2.0.tar.gz
官方最新发行版下载:
http://cdn.megastep.org/makeself/makeself-2.2.0.run
Makeself安装
为了在Linux上安装makeself。下载最新版本号的存档格式文件。运行下载的文件,当文件自解压以后会在当前文件夹下创建一个新的文件夹称为makeself-2.2.0,拷贝全部的shell脚本到/usr/bin文件夹下完毕安装。
$ wgethttp://megastep.org/makeself/makeself-2.2.0.run
$ chmod 755 makeself-2.2.0.run
$ ./makeself-2.2.2.run
$ cd makeself-2.2.0
$ sudo cp *.sh /usr/bin
用法
makeself.sh的基本用法例如以下:
makeself.sh [args] archive_dir file_namelabel startup_script [script_args]
“label”參数是SFX解压缩时打印的消息,“start_script”指定在SFX归档文件成功解压缩后运行的脚本和命令。当你想创建一个自解压的安装文件时会实用处。通常启动脚本将拷贝和安装解压的内容到合适的目标文件夹中。
启动脚本必须位于打包的文件夹中。因此脚本包括在SFX归档文件里。
1. args是Makeself的可选參数。可用的有:
--vesion:打印版本号信息到控制台。然后马上退出;
- --gzip: 使用GZIP压缩(缺省选项)
- --bzip2:使用bzip2压缩
- --compress:使用Unix的compress命令压缩数据
- --nocomp:不压缩
- --notemp:不解压文件到一个暂时文件夹,可是在当前文件夹下创建一个新的子文件夹。
- --current:文件将解压到当前文件夹,而不是子文件夹中,隐含--notemp选项
- --follow:尾随全部的符号链接,也打包那些符号链接的文件。
- --append:近期数据到现有的文档中。而不是创建一个新的数据。
- --header:Makeself2.0開始能够使用一个单独文件存储头部stub。称为makeelf-header.sh。如果位于makeself同样的位置。
- --copy:….
2. archive_dir:包括归档文件的文件夹名称
3. file_name:创建归档文件的名称
4. label:描写叙述软件包的随意文本字符串,当解压文件时显示
5. startup_script:在提取文件文件夹中的命令,因此假设你希望运行一个
在该文件夹中的程序。你必须在你的命令之前加上前缀“./”。比如:./program是正确的。script_args是改命令的附加參数。
这里有一个演示样例,如果用户有一个包镜像存储在/home/joe/mysoft文件夹中,它希望生成一个自解压的mysoft.sh软件包,它将启动存储在/home/joe/mysoft文件夹下的setup脚本。运行命令例如以下:
makeself.sh/home/joe/mysoft mysoft.sh "Joe's Nice Software Package" ./setup
以下是创建包括Makeself发行版的makeself.run文档的命令:
makeself.sh --notempmakeself makeself.run "Makeself by Stephane Peter" echo"Makeself has extracted itself"
由makeself生成的文档能够传递以下的參数:
- --keep:放置文件解压到一个暂时文件夹中(在嵌入脚本运行之后会被删除掉)。文件将直接解压到当前的工作文件夹中。直到你删除它。
- --verbose:在运行嵌入式命令之前提示用户
- --target:同意解压文件夹到任何位置
- --confirm:执行嵌入式命令之前提示用户确认
- --info:打印出关于文档的通用信息(不解压)
- --lsm:打印LSM条目
- --check:使用嵌入的校验和检查文档,不解压文档
- --nochown:缺省,在解压之后在目标文件夹下执行“chown -R”命令,以便全部文件属于当前用户。
假设你以root用户执行大部分须要这样,tar将尝试又一次创建初始化用户全部者。
你能够禁用这个行为。
- --tar:对文档的内容执行tar命令,使用后面的參数作为命令的參数。
- --noexec:解压后不执行嵌入式脚本
不论什么文档后面的參数将作为附加參数传递给嵌入的命令。
在不论什么这些选项之前,你应该显示的使用--专用命令行结构,确保Makeself不会尝试解释它们。
创建自解压文档
为了创建一个自解压的文档,包括全部文件在backup文件夹下,做以下操作。
启动函数仅仅是打印“Extraction done”不做很多其它的事情。
$ makeself.sh --notemp./backup ./backup.run "SFX archive for backup" echo "Extractiondone"
Header is 403 lines long
About to compress 1540 KB of data...
Adding files to archive named"./backup.run"...
./
./jpeg/
./jpeg/1.jpg
.
.
CRC: 2238411397
MD5: 0b0fd3a2ba08ffcec821b9cbaa11b70d
Self-extractible archive"./backup.run" successfully created.
为了解压文档中的文件。简单的运行文档:
$ ./backup.run
Creating directory backup
Verifying archive integrity... All good.
Uncompressing SFX archive forbackup.............
Done
创建自解压安装文件
假设你希望创建一个自解压安装文件,你须要准备一个单独的启动脚本,它将在解压完毕后运行安装过程。
1.创建一个暂时文件夹
#mkdir sftpupload
2.把sftpupload-20141118.zip文件复制到该文件夹中
#cp <dir>/sftpupload-20141118.zip sftpupload
3.然后在sftpupload文件夹下创建一个Shell安装脚本,名为install.sh:
# vi sftpupload/install.sh
#!/bin/bash
echo "Upload start ..."
CURRENT_DIR=`pwd`
echo "1. Current directory$CURRENT_DIR"
INSTALL_DIR=/data/natspace/nat/script/pyscript/sftpupload
TEMP_DIR=$CURRENT_DIR/sftpupload
ZIP_FILE=sftpupload-20141118.zip
echo "2. Unzip file: $ZIP_FILE to$TEMP_DIR"
rm -rf $TEMP_DIR
unzip $ZIP_FILE -d $TEMP_DIR
cd $TEMP_DIR
echo "3. Check the directory:$INSTALL_DIR"
if [ ! -d $INSTALL_DIR ]; then
mkdir -p $INSTALL_DIR
fi
echo "4. Remove stop-*.shscript!"
rm -rf $INSTALL_DIR/stop-*
echo "5. Move file to$INSTALL_DIR"
mv -f * $INSTALL_DIR
chmod 755 $INSTALL_DIR/*.sh
echo "6. Delete the directory:$CURRENT_DIR"
cd $INSTALL_DIR
rm -rf $CURRENT_DIR # TODO:makeself脚本运行完成后会自行删除该文件夹
echo "7. Execute stop-all.shscript"
./stop-all.sh
echo "Update done!"
然后让启动脚本拥有可运行:
$ chmod 755 sftpupload/install.sh
继续。创建一个自解压安装文件。打包启动脚本,例如以下:
$ makeself.sh sftpupload sftpupload.run"Update sftpupload program" ./install.sh
注意::install.sh(安装脚本)之前必须带有“./”前缀,而且install.sh脚本必须具有可运行权限。
注意:install.sh(安装脚本)必须放在makeself的打包文件夹中。
使用makeself创建安装文件的更多相关文章
- Python中模块安装文件的创建及使用
在Python编程中,我们常常需要自己编写模块,当模块文件写好了,就需要创建安装文件,方便模块的发布. 此时,常用的方法,就是使用Python distutils(代表distribution uti ...
- eclipse 下载、安装、创建java文件工程、运行---Windows 10
一.Eclipse Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.幸运的是,Eclipse 附带了一个标准的插 ...
- Linux下创建可执行bin安装文件
需求及应用场景 1.简化操作.一般的软件安装过程,如果想要精简步骤,我们一般会将需要在命令行中输入的命令写成一个脚本,同时将安装介质准备好.我们将脚本和安装介质上传到生产环境,然后通过执行脚本来完成安 ...
- 安装文件制作工具Wix概念快速入门
前言 Wix==Windows installer XML 顾名思议. 用于制作WINDOWS安装文件的XML格式的描述文件. 因为其实现方式为基于声明的方式,而非命令的方式. 特整理一下其相关的概念 ...
- VS2013 生成安装文件
在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不 ...
- NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版
nsis中文版(Nullsoft Scriptable Install System)是一个专业的开源的可以用来封闭Windows程序的实用工具,是一个开源的 Windows 系统下安装程序制作程序. ...
- Java程序如何生成Jar、exe及安装文件
http://blog.csdn.net/luoweifu/article/details/7628006/ 一.用Eclipse生产Jar文件 首先,看一下我的项目的目录结构: 1,项目名字上面点右 ...
- 怎么用OCR图文识别软件在MS Office中创建PDF文件
ABBYY PDF Transformer+是一款可创建.编辑及将PDF文件转换为其他可编辑格式的OCR图文识别软件,不仅可以从纸质文档.图像文件和任何其他流行格式创建PDF文件(相关文章请参考如何从 ...
- 如何给你的Android 安装文件(APK)瘦身
如何给你的Android 安装文件(APK)瘦身 本文翻译自:Putting Your APKs on Diet 原作者:Cyril Mottier Android的apk文件越来 ...
随机推荐
- E20170906-mk
portrait n. 肖像,肖像画; 模型,标本; 半身雕塑像; 人物描写; orientation n. 方向,定位,取向,排列方向; 任职培训; (外交等的) 方针[态度]的确定; 环境判 ...
- 2015 多校赛 第四场 1009 (hdu 5335)
Problem Description In an n∗m maze, the right-bottom corner is the exit (position (n,m) is the exit) ...
- MySQL学习笔记之右连接
MySQL的右连接 #右连接,以右表为基表 select course.stuid,course.stuname,sex,course,city from class1 right join cour ...
- JavaScript alert()函数的使用方法
这里向大家简单介绍一下JavaScript alert()函数的使用,alert--弹出消息对话框,并且alert消息对话框通常用于一些对用户的提示信息. JavaScript alert()函数 a ...
- 取消VS2017窗口置顶
今天打开VS2017,莫名其妙窗口置顶了,百度了一下如何取消窗口置顶,就是Ctrl+Alt+Esc组合键,就可以取消窗口置顶了,至于到底怎么会突然置顶的我也不知道emmm... /********** ...
- html与css命名规范小结
一.命名规则说明 所有的命名最好都用小写 使用英文命名 给每一个表格和表单加上一个唯一的.结构标记id 给每个图片加上alt标签,优点在于图片发生错误时,alt可以体现给用户 二.相对网页外层重要部分 ...
- 华为 荣耀 等手机解锁BootLoader
下载工具按提示操作即可 链接:https://pan.baidu.com/s/1qZezd1q 密码:8pad 备用链接:https://pan.baidu.com/s/1nwv0heD
- 【Linux】ubuntu中怪异的vi编辑器
由于前几天一场windows系统的比特币勒索病毒,我下狠心装了Linux的ubuntu版本.可是今天在使用命令行中的vi编辑器时出现了怪异的现象:backspace不能删除,编辑模式回车随机出现字母. ...
- 怎么不让别人ping服务器
频繁地使用Ping命令会导致网络堵塞.降低传输效率,为了避免恶意的网络攻击,一般都会拒绝用户Ping服务器.为实现这一目的,不仅可以在防火墙中进 行设置,也可以在路由器上进行设置,并且还可以利用Win ...
- fatal error C1083: 无法打开包括文件:“stdio.h
现象: vs2012一直fatal error C1083: 无法打开包括文件:"stdio.h" 不知道配置太多,动到了什么地方,出现了这个问题: 在: 解决方案--调试源文件 ...