制作 shell 脚本安装包

网友投稿 847 2022-09-02

制作 shell 脚本安装包

制作 shell 脚本安装包

在 Linux 中可以利用 cat 命令连接两个文件来制作简单的安装包,其文件后缀通常为 sh、run 或 bin。安装包的文件结构如下图所示:

安装包实质上是一个安装脚本和要安装的内容的组合。文件的头部是脚本文件,执行的时候需要把尾部的二进制文件分解出来。通常这个二进制文件是个压缩包,能够打包很多不同类型的文件,在脚本中解压出来进行处理即可,因此具有不错的灵活性。

简单起见,我们先来写一个 hello 程序:

#include #include int main(int argc, char** argv){ printf("Hello, %s!\n", getenv("USER")); return 0;}

编译、运行看看效果:

$ gcc hello.c -o hello$ ./helloHello, rudy!

我们的目的是将 hello 程序安装到目标机器的 /bin 目录。为了达到这个目的,我们编写一个 install.sh 安装脚本:

#!/bin/bashcp

更进一步,我们可以先将 hello 压缩成 hello.tar.bz2

tar

然后将 install.sh 安装脚本修改为:

#!/bin/bashlines=9 tail -n+$lines $0 > /tmp/hello.tar.bz2cd /tmptar jxvf hello.tar.bz2cp hello /binexit 0

代码解释:

第3行:变量​​lines​​ 的值是指这个脚本的行数加1(这个脚本共有8行);第4行:​​$0​​​ 表示脚本本身,这个命令用来把从​​$lines​​ 开始的内容写入一个 /tmp 目录的 hello.tar.bz2 文件里;第5行:切换到 /tmp 目录操作,解压出来的文件重启系统后将会消失。

接下来我们用 cat 命令连接安装脚本 install.sh 和 hello.tar.bz2:

cat install.sh hello.tar.bz2 >

方便起见,我们写个 Makefile 来构建安装包:

SCRIPT=install.shBIN=helloRUN=helloinstall.runall: gcc hello.c -o $(BIN) tar jcvf $(BIN).tar.bz2 $(BIN) cat $(SCRIPT) $(BIN).tar.bz2 > $(RUN) chmod +x $(RUN)clean: rm $(BIN) $(BIN).tar.bz2 rm $(RUN)

总共3个文件:

$ tree.

在当前目录 ​​make​​ 一下就构建好 helloinstall.run 安装包啦,将其传输至目标设备即可安装:

sudo

安装成功,在系统任意位置都可以执行 hello 命令了!

$ helloHello, rudy!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ALSA 音频数据传输 underrun 和 overrun
下一篇:PHP RBAC权限控制实现思路,你会了吗(php货币)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~