找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1870|回复: 0
打印 上一主题 下一主题
收起左侧

linux .run 文件的制作和安装

[复制链接]
跳转到指定楼层
楼主
ID:107189 发表于 2016-3-6 15:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于要安装nvidia 的驱动,所以才会遇到这个问题。

这里顺便找到.run文件的制作。

run程序安装包实质上是一个安装脚本加要安装的程序,如下图所示:

|-----------------|
| |
| 安装脚本 |
| |
|-----------------|
| |
| 程序 |
| |
|-----------------|
图: run安装包的结构

这样整个run安装包结构就一目了然了,实际上因为实际需要结构多少有点变动但这个无关紧要,只需要明白原理就行了。

制作run安装包以下举个实际的例子:

为了简单起见,要安装的程序就是helloworld程序,安装它的过程就是把它拷贝到/bin目录下。

$ ls
install.sh helloworld
$ cat install.sh
#!/bin/bash
cp helloworld /bin
$

现在有一个安装脚本了,名为install.sh,有一个要安装的程序helloworld.因为要安装的程序一般都是用.tar.bz2来做的。我们这儿也做一下:

$ tar jcvf helloworld.tar.bz2 helloworld

现在修改一个安装脚本install.sh

改为:
#!/bin/bash
lines=7 #这个值是指这个脚本的行数加1,这个脚本共有6行
tail +$lines $0 >/tmp/helloworld.tar.gz # $0表示脚本本身,这个命令用来把从$lines开始的内容写入一个/tmp目录的helloworld.tar.gz文件里。
tar jxvf /tmp/hellowrold.tar.gz
cp helloworld /bin
exit 0

然后使用cat命令连接安装脚本install.sh和helloworld.tar.bz2。

$ cat install.sh helloworld.tar.bz2 > myinstall.run

这样就得到了myinstall.run文件,它的结构如下:

|------------------| 第1行
| |
| install.sh |
| | 第6行
|------------------|
| | 第7行
|helloworld.tar.bz2|
| |
|------------------| 结尾
图: myinstall.run安装包的结构

运行myinstall.run时,运行到第6行的exit 0脚本就退出了,所以不会去运行第7行以下的二进制数据(即 helloworld.tar.bz2文件),而我们用了tail巧妙地把第7行以下的数据重新生成了一个helloworld.tar.gz文件。再执行安装。

run安装包制作较小的程序包是很好的选择,但是它也有缺点,做逻辑比较复杂的安装包,写的安装脚本将会很麻烦。因此此时还是用其他的安装包更好。

安装方法: 以 ***.run 为例:运行 sh ***.run
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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