LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 04-04-03, 13:21 第 1 帖
Beta
 
Beta 的头像
 
 
★版主☆  
  注册日期: Jun 2003
  我的住址: 大越國都城
  帖子: 1,473
  精华: 7
 

标题: 请问怎么制作像 nvidia驱动包 那样的可执行安装包?


想把一堆东西打包成 .bin .run 那样的可执行包,怎么做?
  Beta 当前离线   回复时引用此帖
旧 04-04-03, 13:36 第 2 帖
home_king
 
home_king 的头像
 
 
临时退役版主  
  注册日期: Mar 2003
  帖子: 2,759
  精华: 15
 

标题: 回复: 请问怎么制作像 nvidia驱动包 那样的可执行安装包?


引用:
最初由 Beta 发表
想把一堆东西打包成 .bin .run 那样的可执行包,怎么做?
与M$windows不同,其实这些bin,run只是二进制文件的后缀而已,没其他别的意思,它们本质上是一样的。Unix家族是以文件权限位(r-w-x)作为文件属性判别的,可以用chmod +x <filename>把二进制文件置其"可执行位"。你可以用gcc把你的程序编译成二进制文件。至于安装功能,则是二进制程序的功能,这是另外一回事。







__________________
IBOX, a LiveCD distribution based on Gentoo, is fit for newbie.

IBOX brings to you:
- knoppix-style harddisk installation tool, by which you can install Gentoo in 20 minutes.
- hardware auto-configuration. You can run into X desktop directly.
- all-round software set, including OpenOffice, azureus.
- LiveCD-create-tools. Step-by-step, custom a LiveCD yourself with ease.

Any questions and feedbacks is welcome to home_king at 163 dot com

此帖于 04-04-03 13:40 被 home_king 编辑.
  home_king 当前离线   回复时引用此帖
旧 04-04-03, 13:45 第 3 帖
Beta
 
Beta 的头像
 
 
★版主☆  
  注册日期: Jun 2003
  我的住址: 大越國都城
  帖子: 1,473
  精华: 7
 

不是这个意思。

nvidia驱动包虽然是一个二进制可执行文件,但是你可以把展开看看,里面打包了一堆安装源。realone 的 bin 文件也是这样的。

我猜它们是把编译好了的安装源放在一个目录里,然后通过什么办法将整个目录打包成一个 bin 文件,执行这个 bin 文件时会自动解包并从解包出来的安装源目录里运行安装脚本。

证据:你执行 realone 的 bin 文件,它会解开一个安装源的临时目录在你的主目录里。你从这个目录里手工执行安装脚本一样可以开始安装。
  Beta 当前离线   回复时引用此帖
旧 04-04-03, 13:56 第 4 帖
home_king
 
home_king 的头像
 
 
临时退役版主  
  注册日期: Mar 2003
  帖子: 2,759
  精华: 15
 

哦,是这个意思。
那些安装目录应该是如数据一样被压缩在执行包内的,执行该包后其头部程序段解开自身,然后启动安装过程。
我想shell应该不能实现这功能,不过perl应该可以,建议你去perl版区问问。

此帖于 04-04-03 13:59 被 home_king 编辑.
  home_king 当前离线   回复时引用此帖
旧 04-04-04, 09:09 第 5 帖
waker
 
waker 的头像
 
 
注册会员  
  注册日期: Nov 2002
  帖子: 173
  精华: 0
 

比如要打包的文件是
cat exsample1
代码:
echo "Run exsample1...............OK"
将其打包
tar vcfz exsam.tar.gz exsample1

写个脚本
cat self.sh
代码:
#!/bin/bash [ -d /tmp/self ]|| mkdir -p /tmp/self sed -e '1,/BIGIN SELFEXTR/d' $0 |sed -e '1,/BIGIN SELFEXTR/d' > /tmp/self/test.tar.gz ( cd /tmp/self ; tar xvfz test.tar.gz; . exsample1 ) exit 0 #BIGIN SELFEXTR
然后

cat self.sh exsam.tar.gz >self.bin
chmod +x self.bin
比较简陋:o







__________________
LFS ID 9699
学习笔记 http://waker.hkjzone.com

此帖于 04-04-04 09:14 被 waker 编辑.
  waker 当前离线   回复时引用此帖
旧 04-04-04, 12:06 第 6 帖
home_king
 
home_king 的头像
 
 
临时退役版主  
  注册日期: Mar 2003
  帖子: 2,759
  精华: 15
 

好,很有创意,呵呵。
  home_king 当前离线   回复时引用此帖
旧 04-04-04, 13:36 第 7 帖
Beta
 
Beta 的头像
 
 
★版主☆  
  注册日期: Jun 2003
  我的住址: 大越國都城
  帖子: 1,473
  精华: 7
 

好,经典!
谢谢。

建议加精。
  Beta 当前离线   回复时引用此帖
旧 04-04-04, 23:55 第 8 帖
wangguoqin1001
 
wangguoqin1001 的头像
 
 
注册会员  
  注册日期: Nov 2002
  我的住址: 中国*上海*浦东新区
  帖子: 476
  精华: 3
 

引用:
最初由 waker 发表
cat self.sh
代码:
#!/bin/bash [ -d /tmp/self ]|| mkdir -p /tmp/self sed -e '1,/BIGIN SELFEXTR/d' $0 |sed -e '1,/BIGIN SELFEXTR/d' > /tmp/self/test.tar.gz ( cd /tmp/self ; tar xvfz test.tar.gz >/dev/null; ./exsample1 ) exit 0 #BIGIN SELFEXTR
否则解压的时候会出现文件名。

其实NVIDIA也是这么做的,关键的句子是:
代码:
sum1=`tail -n +6 $0 | cksum | sed -e 's/ /Z/' -e 's/ /Z/' | cut -dZ -f1`

此帖于 04-04-05 00:20 被 wangguoqin1001 编辑.
  wangguoqin1001 当前离线   回复时引用此帖
旧 04-04-09, 12:00 第 9 帖
idkey
 
idkey 的头像
 
 
注册会员  
  注册日期: Sep 2002
  帖子: 366
  精华: 1
 

奇怪,为什么不用makeself呢,nvidia的包也是用他做的呀,这是个成熟的软件,不需要自己再去遍这个轮子了吧:
http://www.megastep.org/makeself/







__________________
我是 xyb 的马甲,呵呵

...."Have you mooed today?"...
  idkey 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 12:22


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org