如何制作deb安装文件

如何制作deb安装文件,第1张

制作deb文件需要有dpkg-deb命令,Ubuntu/Debian 系统自带此命令,越狱过的 iPhone OS 也有此命令,Mac OS X 下需安装Fink,Windows 下需安装 Cygwin。

以上系统中,iPhone OS最适合用来打包deb文件,因为iPhone OS上的用户/组设置与所需要的设置是完全一致的。但因为iPhone/iPod Touch毕竟是手持设备,处理性能比不上电脑,在打包体积较大的deb文件时需要很长时间,有可能会导致失去连接或者SpringBoard崩溃。而且在WinSCP中涉及文本修改的部分,如果文本含有中文的话,编码是个问题(不会保存为UTF-8)。

Ubuntu/Debian 是 deb 文件系统的原生系统,在兼容性和处理性能上最好,但问题在于,Ubuntu/Debian 没有 iPhone OS 上的一些用户和组,最典型的就是wheel、mobile组和mobile用户。

Mac OS X的问题跟 Ubuntu/Debian 差不多,没有mobile用户/组,而且需要装 Fink 才能支持 deb。

Windows的问题最多,Cygwin体积超大不说,使用起来还很麻烦,加上 Windows 的文件系统和 Unix 标准完全不同,且 Windows 下会面临更严重的编码问题,所以不推荐用 Windows 来打包。

不管是哪个系统,打包 deb 的方法是一样的,只是在某些地方对于某些系统需要特别注意。

一个 deb 安装包由两个部分组成,一个是安装控制/识别信息,另外一个就是实际的程序文件。

用7-zip或Linux下的存档管理器打开 deb 文件,其中安装控制/识别信息储存在 controltargz 里面,而 datatarxxx 则储存了程序数据。

解包deb文件

引用

有时候不是需要制作一个全新的deb,而是需要修改现有的deb,那么第一步就是解包。假设deb的文件名是abc_10deb

那么解包命令是

复制代码

dpkg-deb -x abc_10deb tmp

复制代码

dpkg-deb -e abc_10deb tmp/DEBIAN

第一个命令是用于解压出实际数据到tmp目录下,后一个命令是解压出安装控制脚本到tmp/DEBIAN目录下,此处必须是大写的DEBIAN。

可以看到在tmp目录下出现了实际数据和DEBIAN目录。

以dpkg-deb -x 和- e 命令解包deb会保留文件的属性/权限/用户/组等信息。

关于dpkg-deb的命令,可以输入

复制代码

dpkg-deb --help

进入DEBIAN目录,可以看到有一个control文件,无后缀名,这个文件就是用来记录deb的安装信息。有时候还可以看到postinst,preinst,prerm,postrm,extrainst_这些文件,这些文件是deb安装的时候执行的脚本(类似于Windows下的批处理文件)。

另外一种解包deb的方法就是用7-zip或者存档管理器之类的软件直接解包到指定目录,但这样不会保留文件的属性/权限/用户/组等信息,因此除非这些信息不重要,或者这些信息是通过脚本来设置,否则不推荐使用该种方法。如果只是要提取某些文件的话倒是可以用,省事一些。

准备打包deb的目录/文件

引用

如果是解包已有的deb,那么目录已经配置好了。如果是新建一个deb,需要有一个主目录,这里以tmp为例,在tmp目录下新建一个目录,DEBIAN。

完成deb数据配置

引用

将程序文件放在tmp目录下。放置规则是,假如在iPhone OS上一个文件是 /Applications/ABCapp/ABC,那么就在 tmp 目录下依次新建目录Applications,ABCapp,然后把ABC放在ABCapp下。其余文件和目录也是一样的放置。

这里要注意的是文件的属性/权限/用户/组的问题,当然前提是知道文件的属性和权限等信息。

通常来说,可执行文件,比如应用程序的可执行文件,脚本等,属性需设为0755或更高(0775或0777),/var/mobile/下的绝大部分文件/文件夹的用户/组需设为mobile等。

要设置文件/文件夹的权限/属性,使用命令

复制代码

chmod ABCD XXX

这样的格式,ABCD为需要的属性/权限,比如0644,0755等,一般来说,可行性文件需要设为0755(0775和0777大部分情况下是用不上的,有些特殊的需要设为4755等),其它文件默认就是0644(不可执行),XXX是文件名,可以加上路径。

要设置文件/文件夹的用户/组,使用命令

复制代码

chown user:group XXXX

其中user是需要设置的用户,group是组。最常用的是root:wheel和mobile:mobile。

注意:

1 如果当前用户是非root帐户,如果要将文件的用户/组设为root,需要使用sudo命令来提示权限。

2 如果要递归设置以上信息,可以使用 -R 参数。比如要将tmp目录下的所有子目录和文件设为0755及root:wheel,可以使用命令

复制代码

chmod -R 0755 tmp

chown -R root:wheel tmp

关于文件/文件夹的属性/权限/用户/组的更多说明:

因为deb打包是先将所有的文件/文件夹归档为tar文件之后再压缩,因此文件/文件夹的属性/权限/用户/组这些信息会被保留下来,因此如果直接设置好了以后再打包deb的话就不需要通过postinst之类的控制脚本来设置权限等信息。

如果无法直接设置属性/用户/组等信息,通常需要在postinst脚本里加入设置属性/权限/用户/组的命令

如果deb中的目录是在iPhone OS本身就有的,那么不需要另外设置属性/权限/用户/组等,即使现有的和需要的不一样。因为deb安装不会替换原有文件夹的数据。比如/Applications目录是root:admin,而要打包的deb中该目录是ABC:DEF,那么不需要修改ABC:DEF

尤其要注意的是mobile:mobile

Ubuntu/Debian上虽然没有wheel组,但是root:root在iPhone上会自动转为root:wheel,所以如果是准备将root:root变为root:wheel,那么可以保留root:root就可以了。

理论上来说,在无安装脚本设置用户/组的前提下,如果不涉及mobile:mobile的用户/组,全部 *** 作都可以直接在Ubuntu/Debian和Mac OS X上完成

deb后缀的软件包是for Debian系的(包括Ubuntu),不是给centos安装的。

rpm后缀的软件包才是for Redhat系的(包括CentOS)。

提供linux软件包的网站通常会同时给出rpm和deb后缀的同版本号安装包,以及编译安装包。

如果没有rpm包则只能编译安装了。

deb包是Debain系列的Linux *** 作系统所使用的一种包封装格式。

Debian的包管理器dpkg只出现在Debina Linux中。它的优点是不用被严格的依赖性检查所困扰,但是只在Debian Linux发行版中才有这个包管理工具。

1使用dpkg -i安装deb包

语法:

dpkg -i package-file-name

-i is to install a package

下例为使用dpkg来安装tcl

$ dpkg -i tcl84_8419-2_amd64deb

Selecting previously deselected package tcl84

(Reading database 94692 files and directories currently installed)

Unpacking tcl84 (from tcl84_8419-2_amd64deb)

Setting up tcl84 (8419-2)

Processing triggers for menu

Processing triggers for man-db

如下所示,你可以使用dpkg -l +名称 来验证安装

$ dpkg -l | grep 'tcl'

ii tcl84 8419-2 Tcl (the Tool Command Language) v84 - run-t

上面命令显示tcl包是否安装正确,其中“ii”表示“installed ok installed”

2使用kpkg -r来删除deb包

dpkg 加上 -r参数,用于卸载已安装好的软件包

$ dpkg -r tcl84

(Reading database 94812 files and directories currently installed)

Removing tcl84

Processing triggers for man-db

Processing triggers for menu

现在检查软件包的状态

# dpkg -l | grep 'tcl'

rc tcl84 8419-2 Tcl (the Tool Command Language) v84 - run-t

rc 代表 ‘removed ok config-files’ 卸载命令并没有清除配置文件 每个已安装包的状态可在 /var/lib/dpkg/status查看 tcl84 包状态如下所示,

Package: tcl84

Status: deinstall ok config-files

Priority: optional

Section: interpreters

Installed-Size: 3308

以下命令表示彻底卸载软件包(包括配置文件)

$ dpkg -P tcl84

(Reading database 94691 files and directories currently installed)

Removing tcl84

Purging configuration files for tcl84

Processing triggers for menu

$ dpkg -l | grep 'tcl'

$

现在软件已完全删除, 在 /var/lib/dpkg/status 中查看状态如下

Package: tcl84

Status: purge ok not-installed

Priority: optional

Section: interpreters

dpkg(底层一些的包管理工具,用上apt(高级包管理工具)之后,一般是不需要处理单个的deb文件的。如果需要,就要用dpkg命令)

1dpkg -i gedit-2121deb:安装gedit

2dpkg -r gedit:卸载gedit,但不删除配置文件

3dpkg -P gedit:这会连同gedit的配置文件一起删除,只用-r的话是不删除配置文件的

deb 是 ubuntu 、debian 的格式。

rpm 是 redhat 、fedora 、suse 的格式。

他们不通用(虽然可以转换一下)。

deb是debian发行版的软件包

ubuntu是基于debian 发行的 所有可以用

deb是solaris系统下的安装包后缀名。安装方法如下

cd 到安装包的目录

dpkg -i 安装包名字

如果你使用的是red hat linux,然后运行以下命令安装

cd 到安装包的目录

rpm -ivh 安装包名字

(望楼主采纳哦)

以上就是关于如何制作deb安装文件全部的内容,包括:如何制作deb安装文件、centos 怎么安装deb后缀软件包、deb怎么安装 Linux下Deb包的安装方法及错误解救等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10115839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存