deb、rpm、run程序安装包的制作
run包转载自:制作linux下的.run安装包介绍run程序安装包实质上是一个安装脚本加要安装的程序,文件后缀为.run。安装方法很简单, 以 xxx.run 为例:终端或控制台下运行 sh xxx.run。——————| 安装脚本 |——————| 程序包 &nb
run包
转载自:制作linux下的.run安装包
介绍
run程序安装包实质上是一个安装脚本加要安装的程序,文件后缀为.run。安装方法很简单, 以 xxx.run
为例:终端或控制台下运行 sh xxx.run
。
——————
| 安装脚本 |
——————
| 程序包 |
——————
run 安装包制作较小的程序包是很好的选择,但是它也有缺点,做逻辑比较复杂的安装包,写的安装脚本将会很麻烦,因此此时还是用其他的安装包更好。
制作
- 创建一个test可执行文件(假装它可执行~~)
touch test
- 压缩成
tar.gz
文件
tar -zcvf test.tar.gz test
- 创建shell脚本
test.sh
#!/bin/bash
lines=8 #这个值是指这个脚本的行数加 1,这个脚本共有 7 行
tail -n +$lines $0 >/tmp/test.tar.gz # $0 表示脚本本身,这个命令用来把从 $lines 开始的内容写入一个 /tmp 目录的 test.tar.gz 文件里。
tar -zxvf /tmp/test.tar.gz
cp test /usr/bin
rm test -f
exit 0 # 在脚本的最后一行后面不能有空行(这与参考的博客中不一样,博客中要求有一个空行)
Linux tail 命令
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename
更新就可以看到最新的文件内容。
命令格式:
tail [参数] [文件]
参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
–pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
cat
连接脚本和压缩包,生成test.run
安装包
cat test.sh test.tar.gz > test.run
- 运行
test.run
安装包,将可执行文件安装到/usr/bin
目录下
sh ./test.run
deb包
转载自:如何制作deb包
dpkg制作deb包
介绍
deb是 ubuntu 、debian 的格式,是debian发行版的软件包,ubuntu是基于debian发行的所以可以用。
dpkg是Debian Package的简写,是为Debian专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自Debian的Linux发行版都使用dpkg,例如Ubuntu、Knoppix 等。
包结构
PS:上图中,helloworld就是需要安装的程序文件或者文件夹,将在/opt目录下。
包括DEBIAN目录和软件具体安装目录(模拟安装目录)(如etc,usr,opt,tmp等)。
在DEBIAN目录中至少有control文件,还可能有postinst(postinstallation)、postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版权)、changlog (修订记录)和conffiles等。
- postinst文件:包含了软件在进行正常目录文件拷贝到系统后,所需要执行的配置工作。
- prerm文件:软件卸载前需要执行的脚本。
- postrm文件:软件卸载后需要执行的脚本。
- control文件:这个文件比较重要,它是描述软件包的名称(Package),版本(Version),描述(Description)等,是deb包必须剧本的描述性文件,以便于软件的安装管理和索引。
control文件可能会有下面的字段:
- Package:包名
- Version:版本
- Architecture:软件包结构,如基于i386,amd64,m68k,sparc,alpha,powerpc等
- Priority:申明软件对于系统的重要程度,如required,standard,optional,extra等
- Essential:申明是否是系统最基本的软件包(选项为yes/no),如果是的话,这就表明该软件是维持系统稳定和正常运行的软件包,不允许任何形式的卸载(除非进行强制性的卸载)
- Section:申明软件的类别,常见的有utils,net,mail,text,devel 等
- Depends:软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之间采用逗号隔开
- Pre-Depends:软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的预运行脚本需求
- Recommends:这个字段表明推荐安装的其他软件包和库文件
- Suggests:建议安装的其他软件包和库文件
- Description:对包的描述
- Installed-Size:安装的包大小
- Maintainer:包的制作者,联系方式等
制作
创建好相应的包结构后,运行以下命令即可
dpkg -b <包目录> <包名称>.deb
执行dpkg -b mydeb mydeb.deb
会生成mydeb.deb
软件包。
其他
- 安装
dpkg -i xxx.deb
在.deb
文件所在目录下执行安装命令sudo dpkg -i mydeb.deb
后,会在/opt
目录下安装helloworld
程序文件。
- 卸载
dpkg -r <package_name>
在任意目录下执行sudo dpkg -r helloworld
(注意package_name是实际安装的软件包名而不是deb包名!),/opt
目录下安装helloworld
程序文件会被删除
- 解压缩包
dpkg -X xxx.deb [dirname]
解压.deb
文件后,软件具体的安装目录以及目录下的程序文件会拷贝到指定路径下。
- 生成和删除日志文件
在postinst
文件写入以下代码,用于在软件安装后生成日志文件。
# !/bin/sh
echo "my deb" > ~/Desktop/mydeb.log
在postrm
文件写入以下代码,用于在软件卸载后删除日志文件。
# !/bin/sh
rm -rf ~/Desktop/mydeb.log
rpm包
介绍
rpm 是 redhat 、fedora、suse 的格式。全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。
制作
原理和.deb类似,需要先定义好包结构,然后打包。
更多推荐
所有评论(0)