LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 5057|回复: 8

请问怎么制作像 nvidia驱动包 那样的可执行安装包?[已解决]

[复制链接]
发表于 2004-4-3 13:21:49 | 显示全部楼层 |阅读模式
想把一堆东西打包成 .bin .run 那样的可执行包,怎么做?
发表于 2004-4-3 13:36:47 | 显示全部楼层

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

最初由 Beta 发表
想把一堆东西打包成 .bin .run 那样的可执行包,怎么做?

与M$windows不同,其实这些bin,run只是二进制文件的后缀而已,没其他别的意思,它们本质上是一样的。Unix家族是以文件权限位(r-w-x)作为文件属性判别的,可以用chmod +x <filename>把二进制文件置其"可执行位"。你可以用gcc把你的程序编译成二进制文件。至于安装功能,则是二进制程序的功能,这是另外一回事。
 楼主| 发表于 2004-4-3 13:45:06 | 显示全部楼层
不是这个意思。

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

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

证据:你执行 realone 的 bin 文件,它会解开一个安装源的临时目录在你的主目录里。你从这个目录里手工执行安装脚本一样可以开始安装。
发表于 2004-4-3 13:56:26 | 显示全部楼层
哦,是这个意思。
那些安装目录应该是如数据一样被压缩在执行包内的,执行该包后其头部程序段解开自身,然后启动安装过程。
我想shell应该不能实现这功能,不过perl应该可以,建议你去perl版区问问。
发表于 2004-4-4 09:09:40 | 显示全部楼层
比如要打包的文件是
cat exsample1

  1. echo "Run exsample1...............OK"
复制代码


将其打包
tar vcfz  exsam.tar.gz exsample1

写个脚本
cat self.sh

  1. #!/bin/bash
  2. [ -d /tmp/self ]|| mkdir -p /tmp/self
  3. sed -e '1,/BIGIN SELFEXTR/d' $0 |sed -e '1,/BIGIN SELFEXTR/d' > /tmp/self/test.tar.gz
  4. ( cd /tmp/self ;
  5. tar xvfz test.tar.gz;
  6. . exsample1
  7. )
  8. exit 0
  9. #BIGIN SELFEXTR
复制代码


然后

cat self.sh exsam.tar.gz >self.bin
chmod +x self.bin
比较简陋
发表于 2004-4-4 12:06:55 | 显示全部楼层
好,很有创意,呵呵。
 楼主| 发表于 2004-4-4 13:36:30 | 显示全部楼层
好,经典!
谢谢。

建议加精。
发表于 2004-4-4 23:55:00 | 显示全部楼层
最初由 waker 发表
cat self.sh

  1. #!/bin/bash
  2. [ -d /tmp/self ]|| mkdir -p /tmp/self
  3. sed -e '1,/BIGIN SELFEXTR/d' $0 |sed -e '1,/BIGIN SELFEXTR/d' > /tmp/self/test.tar.gz
  4. ( cd /tmp/self ;
  5. tar xvfz test.tar.gz [color=red]>/dev/null[/color];
  6. ./exsample1
  7. )
  8. exit 0
  9. #BIGIN SELFEXTR
复制代码


否则解压的时候会出现文件名。

其实NVIDIA也是这么做的,关键的句子是:
  1.     sum1=`tail -n +6 $0 | cksum | sed -e 's/ /Z/' -e 's/        /Z/' | cut -dZ -f1`
复制代码
发表于 2004-4-9 12:00:35 | 显示全部楼层
奇怪,为什么不用makeself呢,nvidia的包也是用他做的呀,这是个成熟的软件,不需要自己再去遍这个轮子了吧:
http://www.megastep.org/makeself/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表