首页 > 系统相关 >linux的程序打包deb

linux的程序打包deb

时间:2023-05-24 19:12:41浏览次数:36  
标签:文件 tar 安装包 linux deb 安装 MyDeb 打包

deb安装包
deb是Unix系统(其实主要是Linux)下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。
由于 Unix 类系统对权限、所有者、组的严格要求,而 deb 格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。

deb组成
查看deb包含哪些文件

两个命令结果都是一样的,查看deb安装包内有哪些文件。

dpkg -c xxx.deb // 安装前根据deb文件查看
dpkg -L debname // 安装后根据软件名称查看

deb包本身有三部分组成

组成 详细
数据包 包含实际安装的程序数据,文件名为“data.tar.XXX”
安装信息及控制包 包含deb的安装说明,标识,脚本等,文件名为“control.tar.gz”
二进制数据 包含文件头等信息,需要特殊软件才能查看
deb本身可以使用不同的压缩方式. tar格式并不是一种压缩格式,而是直接把分散的文件和目录集合在一起,并记录其权限等数据信息。之前提到过的 data.tar.XXX,这里 XXX 就是经过压缩后的后缀名. deb默认使用的压缩格式为gzip格式,所以最常见的就是 data.tar.gz。常有的压缩格式还有 bzip2 和 lzma,其中 lzma 压缩率最高,但压缩需要的 CPU 资源和时间都比较长

详细介绍:

data.tar.gz
包含的是实际安装的程序数据,而在安装过程中,该包里的数据会被直接解压到根目录(即/),因此在打包之前需要根据文件所在位置设置好相应的文件/目录树。
control.tar.gz
则包含了一个deb安装的时候所需要的控制信息。
控制文件 描述
control 用了记录软件标识,版本号,平台,依赖信息等数据
preinst 在解包data.tar.gz前运行的脚本
postinst 在解包数据后运行的脚本
prerm 卸载时,在删除文件之前运行的脚本
postrm 在删除文件之后运行的脚本
备注:
- inst是install(安装)的缩写
- pre是表示XX之前的前缀
- post是表示XX之后的前缀
- rm是remove(移除)的缩写

安装&移除
deb包安装

dpkg -i xxx.deb

deb包移除

dpkg -r debname

查看某个文件属于哪个安装包
dpkg -S filepath

指定安装路径
dpkg -X xxx.deb dirname

制作deb流程
准备好可执行的二进制文件
这个二进制文件要可执行,提前要考虑兼容性,如果程序有目录要完整的一个程序目录。
这里只拿一个单独的二进制文件打包。测试文件下载

新建软件文件夹
我们测试名称为MyDeb

新建一个名为DEBIAN文件夹
此文件夹内存放控制信息

在DEBIAN里新建一个文本文档, 名为control, 编码为utf-8, 内容如下所示:

例子:

Package: MyDeb
Version: 1.0.0-2018.01.11
Section: Software
Priority: optional
Depends:
Suggests:
Architecture: i386
Installed-Size: 4096
Maintainer: gatieme
Provides: bioinfoserv-arb
Description: xxx
我们创建一个简单的。

package: MyDeb #安装包的名称
version: 1.0.0 #版本
architecture: i386 #平台
maintainer: young #维护者
description: you can description the deb #描述安装包的信息
然后我们创建对应的二进制包安装完成后的路径信息放置在DEBIAN的同级目录下,也就是把当前的目录当成根(“/”)目录,制作完成后安装时,当前目录下除了DEBIAN目录的其他目录都会被默认安装到系统的“/”目录下。

下面是一个程序目录的例子。

|——mydeb
|————usr
|————bin
|——可执行文件(安装后,就在你的/usr/bin生成相应的可执行文件)
|————share

|————icons

|——deb.png(图标文件生成到/usr/share/icons/)

|————applications
|——deb.desktop(桌面文件生成到/usr/share/applications/)

|————DEBIAN(大写、用来制作打包文件)
|————control(描述deb包的信息必须的文件)

完整实验例子目录结构:

MyDeb
├── DEBIAN
│ └── control
├── opt
│ └── MyDeb
│ ├── heart
│ └── heart.desktop
└── usr
├── bin
│ └── heart -> /home/vincent/桌面/MyDeb/opt/MyDeb/heart
└── share
├── applications
│ └── heart.desktop
└── icons
└── heart_98.png

8 directories, 6 files

打包

sudo dpkg -b MyDeb/ MyDeb-linux-amd64.deb
————————————————

标签:文件,tar,安装包,linux,deb,安装,MyDeb,打包
From: https://www.cnblogs.com/tomato-haha/p/17429258.html

相关文章

  • Rocky Linux 9.2修改网卡名为eth0且配置静态ip
    修改网卡ens18为eth0mv/etc/NetworkManager/system-connections/ens18.nmconnection/etc/NetworkManager/system-connections/eth0.nmconnectioncat/etc/default/grub在这一行GRUB_CMDLINE_LINUX结尾添加net.ifnames=0biosdevname=0grub2-mkconfig-o/boot/grub2/grub.cfg......
  • 制作deb安装包
    今天讲一讲如何制作deb安装包。制作安装包的命令很简单,以我近期的项目为例:dpkg-bhsclient/hsclient_1.0.0_arm64.deb以上命令会将hsclient文件夹的内容制作成hsclient_1.0.0_arm64.deb安装包。制作时间取决于hsclient文件夹的大小。所以,主要工作量在于hsclient文件夹的准......
  • Linux下SSH远程连接断开后让程序继续运行解决办法
    简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。1.创建screenscreen执行指令后出现如下界面按Enter键即可退......
  • vs2019打包程序时添加自定义的系统必备组件
     若要创建引导程序包,必须创建产品清单产品清单 product.xml包清单 package.xml 将文件复制到引导程序文件夹位置C:\ProgramFiles(x86)\MicrosoftVisualStudio14.0\SDK\Bootstrapper\Packages文件夹下    ......
  • linux常用命令
    1.常见命令1.1alias命令别名对于较长的命令,可以将其定义成较短的别名aliasNAME='VALUE'unalias#删除别名-a#取消所有别名\alias#斜杠加别名可以还原同名命令如果想永久有效,要定义在配置文件中仅对当前用户:~/.bashrc对所有用户有效:/etc/bashrc注......
  • linux安装并启动nacos
    前提准备下载最新稳定版本,此处以nacos-server-2.1.0.tar.gz版本为例安装下载地址:https://github.com/alibaba/nacos/releases 二、具体步骤2.1下载完成后解压:tar-zxvfnacos-server-2.1.0.tar.gz2.2将解压文件移动到/usr/local目录下mvnacosnacos-2.1.0cd/usr/local/......
  • Linux-ln创建链接
    1.ln命令介绍ln命令可以看作是link的缩写,其功能是创建文件间的链接,链接类型包括硬链接(hardlink)和软链接(符号链接,symboliclink) 2.ln命令格式ln命令的基本格式如下:ln[选项]源文件目标文件选项:-s:建立软链接文件。如果不加"-s"选项,则建立硬链接文件;-f:强制。如果目......
  • linux 查看日志常用命令
    查看日志:查看上下10行:grep-C10'NullPointerException'logback.log当然也可以只看上面10行:grep-B10'NullPointerException'logback.log或者下面10行:grep-A10'NullPointerException'logback.loglinux通过grep根据关键字查找日志文件上下文 1、在标......
  • minikub linux安装
    亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好使的安装方式亲测好......
  • Linux_提高效率的快捷操作
    history&fclinux历史机制对命令行中输入的命令进行编号并依此保存,以维护命令历史。登录会话期间输入的命令保存在shell内存中,若终止命令则添加至历史文件历史命令缓冲区-a:将缓存在内存的历史命令写入历史命令文件中【~/.bash_history】-c:清空当前内存里的历史命......