DEB简介

22 篇文章 0 订阅
DEB是Debian 软件包格式的 文件扩展名,跟Debian的命名一样,DEB也是因Debra Murdock而得名,她是Debian创始人Ian Murdock的太太。
Debian包是Unixar的标准归档,将包文件信息以及包内容,经过gzip和tar打包而成。
处理这些包的经典程序是dpkg,经常是通过Debian的 apt-get来运作。
通过Alien工具,可以将deb包转换成rpm、 tar.gz格式。
deb包在 Linux操作系统中类似于windows中的 软件包(exe),几乎不需要什么复杂的编译即可通过鼠标点击安装使用。此外,deb广泛应用于越狱后iOS 软件及MeeGo(含Maemo软件)中。

2苹果iPhone应用格式

deb 格式是 Debian 系统(包含 Debian 和 Ubuntu )专属安装包格式,配合 APT  软件管理系统,成为了当前在 Linux 下非常流行的一种安装包。进入 2.x 时代之后有 Cydia 作者 Jay Freeman(saurik) 移植到 iPhone 平台上,一起的还有 APT  软件管理系统。

安装包格式

deb 是 Unix 系统(其实主要是 Linux )下的安装包,基于 tar 包,因此本身会 记录文件的权限(读/写/可执行)以及 所有者/用户组。
由于 Unix 类系统对权限、 所有者、组的严格要求,而 deb 格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。
deb 包本身有三部分组成:数据包,包含实际安装的程序数据,文件名为 data.tar.XXX;安装信息及控制 脚本包,包含 deb 的安装说明,标识,脚本等,文件名为 control. tar.gz;最后一个是 deb 文件的一些二进制数据,包括文件头等信息,一般看不到,在某些 软件中打开可以看到。
deb 本身可以使用不同的压缩方式。tar 格式并不是一种 压缩格式,而是直接把分散的文件和目录集合在一起,并记录其权限等数据信息。之前提到过的 data.tar.XXX,这里 XXX 就是经过压缩后的后缀名。deb 默认使用的 压缩格式为 gzip 格式,所以最常见的就是 data. tar.gz。常有的 压缩格式还有 bzip2 和 lzma,其中 lzma  压缩率最高,但压缩需要的 CPU 资源和时间都比较长。
data. tar.gz包含的是实际安装的程序数据,而在安装过程中,该包里的数据会被直接解压到根目录(即 / ),因此在打包之前需要根据文件所在位置设置好相应的文件/目录树。
而 control. tar.gz 则包含了一个 deb 安装的时候所需要的控制信息。一般有 5 个文件:control,用了记录 软件标识,版本号,平台,依赖信息等数据;preinst,在 解包data. tar.gz 前运行的 脚本;postinst,在解包数据后运行的脚本;prerm, 卸载时,在 删除文件之前运行的脚本;postrm,在删除文件之后运行的脚本;在 Cydia 系统中,Cydia 的作者 Saurik 另外添加了一个脚本,extrainst_,作用与 postinst 类似。

安装包特点

丰富的资源:Cydia 上本身就不少,更何况任何格式的安装包都可以转换为 deb。
相对方便的在线购买模式:Cydia Store,不过尽管没有 App Store 的5台设备的限制,但对国内用户来说,付款方式比较困难。
破解难度较大,没有使用 App Store 的验证方式,所以必须将验证和防破解措施加入程序里面,这样就比较难破解,对 软件开发者来说是个好事。
完善的 Unix 文件系统支持:无需以命令设置文件的权限、 所有者和用户组(当然也可以以 脚本来设置)
完善的 脚本支持:5个脚本依照安装和 卸载的先后顺序执行,可以提供更多选择。比如 备份还原操作,可以在 preinst 中 备份文件,而在 postrm 中还原文件
严格的依赖关系:deb 遵循严格的依赖关系(于 Depends 和 Pre-Depends 指定),可以确保 软件运行所必需的组件。 在线安装的时候会自动安装所依赖的 软件包卸载时也很重要,比如 软件包 A 依赖于 B,当卸载 B 的时候会提示 A 依赖于 B,卸载掉 B 的话会导致 A 不能用,这样可以确保系统的完整性和稳定性。
Conflicts、Replaces、Provides 等键值的存在可以实现冲突提示或替换其它 软件包
完全权限:由于 deb 必须以最高权限 root 的身份运行,deb可以对系统任何位置进行操作,换句话说,deb 拥有对整个系统的完全控制,因此 deb 安装包 软件可以实现很多 ipa 不能实现的功能。
相对简单的获取方式(在线或离线)和安装方式,也不用担心在不同机器上同步会删掉程序的问题。
安装相对简单:其实无论是哪种安装包,安装方法都不算很复杂,只不过 deb 稍微复杂一些。

安装方法

Cydia 或同类 APT 管理 软件 在线安装,这个是最佳的安装方式,因为通常无需考虑依赖关系,但缺点是对网络的要求比较高;
命令行中以 dpkg -i XXX.deb 的形式安装,好处是可以以 通配符一次性安装多个 deb,而且也可以直接看到 脚本的运行状况和安装成功/失败的提示信息,缺点是需要命令行 软件的支持,如 Putty/WinSCP的控制台/iSSH/ MobileTerminal,很多人也不熟悉命令行下的操作。另外,安装完后会不显示图标;
放置于 AutoInstall 目录重启安装。该方法实际是 Cydia 提供的一个启动 脚本,在每次系统启动时以 dpkg 命令安装 AutoInstall 目录下的 deb,好处是不需要命令行操作,缺点是必须要重启,有些甚至要重启两次,也会出现不显示图标的情况;
利用 iFile 安装,好处是图形化操作, 桌面会显示图标,缺点是不能一次安装多个 deb;
用 Cyder II 等 软件来安装,其原理是模拟一个 APT 软件管理器来下载相应的 deb 文件并传到设备,然后以前面几种方式来安装。
总体来说,deb 的安装都是依赖于 dpkg -i 命令来安装,只不过有些是在命令行下输入命令,有些是提供了图形界面。但除了 Cydia 安装一种方式之外,其余几种安装方式都存在一些 共有的问题:
不会自行搜索依赖关系,必须手动提供所依赖的 deb;
Cydia 会读取安装 脚本里的一些特殊语句,比如仅在全新安装时执行而不在升级时执行,安装完成后重启 SpringBoard 或设备等等。

卸载方法

Cydia 里 卸载,优点是卸载过程和提示信息很详细,全图形界面操作,同时也提供了重新安装的选项;
以 dpkg -r Package_ID 命令或 dpkg -P Package_ID 命令来 卸载
Cydelete 来 卸载,优点是可以直接在 桌面上卸载有图标的 软件,但对那些没有图标的无能为力。
安装过程 读取数据库并锁定,避免同时有两个安装程序在运行
读取 control 中的 Package( 软件包标识)和版本信息,并搜索数据库,若已存在,则 卸载之后再安装;
检查 Depends, Pre-Depends, Conflicts 和 Replaces,如果检测到已存在 Conflicts 中存在的 软件,则报错并终止安装。如未找到 Pre-Depends 指定的 软件,则报错并终止安装。如找到 Replaces 中指定的软件,则 卸载之;
将数据写入 /var/lib/dpkg/status 文件中;
执行 preinst  脚本(如果有);
解包 data. tar.gz,将文件放置于相应位置,并将文件列表写入 /var/lib/dpkg/info/XXX.list;
运行 postinst 和 extrainst_  脚本(如果有);
如果之前的安装都没有出错,即安装成功,那么会在 status 文件中写入 Status: install ok installed 信息,否则会写入其它状态数据,比如 Unpacked (未 解包数据)、Failed-config( 脚本未能成功执行)、Half-installed(安装失败等);
重新加载数据库并解除锁定。
卸载过程 读取数据库并锁定;
根据 软件标识搜寻数据库;
检查是否有 软件依赖于待 卸载的软件,如果有则提示,并中断卸载;
执行 prerm  脚本(如果有);
读取 /var/lib/dpkg/info/XXX.list 文件,并删除 list 文件中记录的全部文件和非空文件夹;
运行 postrm  脚本
如果 卸载命令是 dpkg -r,则保留 status 中的记录并改为 Status: Not installed;
如果 卸载命令是 dpkg -P,则删除全部数据;
如果 卸载过程没有错误的话,重新读取数据库并解除锁定。
由于 deb 安装的 软件可能会在运行时在 /var/mobile/Documents 下放置存档文件,或在 /var/mobile/Library/Preferences 下放置设置文件,而这些文件并没有记录在 list 文件里,所以 卸载的时候不会被删除。

3MeeGo软件包格式

MeeGo系统基于Linux架构,同样采用deb格式 软件包
N9识别以QT开发工具主导的deb文件;meego上网本识别以linux caneflip的rpm和qt的deb文件,但由于界面不同,N9的程序不能很好地适应在 桌面系统上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是deb包的安装步骤: 1. 创建一个名为deb_pack的文件夹,用于存放相关文件。 2. 在deb_pack文件夹中创建一个名为helloworld的文件夹,并将需要安装的文件放入其中。 3. 在deb_pack文件夹中创建一个名为build_deb.sh的文件,并将以下代码复制到其中: ```shell #!/bin/bash set -e # 获取软件包名称和版本号 PACKAGE_NAME=$1 PACKAGE_VERSION=1.0 # 创建软件包目录结构 mkdir -p $PACKAGE_NAME-$PACKAGE_VERSION/DEBIAN mkdir -p $PACKAGE_NAME-$PACKAGE_VERSION/usr/bin mkdir -p $PACKAGE_NAME-$PACKAGE_VERSION/usr/share/$PACKAGE_NAME # 复制软件包文件到相应目录 cp $PACKAGE_NAME/* $PACKAGE_NAME-$PACKAGE_VERSION/usr/share/$PACKAGE_NAME/ cp $PACKAGE_NAME.sh $PACKAGE_NAME-$PACKAGE_VERSION/usr/bin/$PACKAGE_NAME # 创建控制文件 cat > $PACKAGE_NAME-$PACKAGE_VERSION/DEBIAN/control <<EOF Package: $PACKAGE_NAME Version: $PACKAGE_VERSION Section: base Priority: optional Architecture: all Depends: bash (>= 4.0) Maintainer: Your Name <youremail@example.com> Description: Your description here. EOF # 构建deb包 dpkg-deb --build $PACKAGE_NAME-$PACKAGE_VERSION ``` 4. 在终端中进入deb_pack文件夹,并运行以下命令以构建deb包: ```shell sudo ./build_deb.sh helloworld helloworld.deb ``` 5. 构建完成后,在deb_pack文件夹中会生成一个名为helloworld.deb的文件。 6. 运行以下命令以安装deb包: ```shell sudo dpkg -i helloworld.deb ``` 7. 运行以下命令以启动安装的软件: ```shell helloworld ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值