deb、rpm、run程序安装包的制作

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包制作方法

介绍

rpm 是 redhat 、fedora、suse 的格式。全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。

制作

原理和.deb类似,需要先定义好包结构,然后打包。

猜你喜欢

转载自blog.csdn.net/XindaBlack/article/details/106850017