制作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包的安装方法及错误解救等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)