中国青基会

查看完整版本: 『原创』pdaXrom下ipk包的建立

wjping119 2006-1-5 16:13

『原创』pdaXrom下ipk包的建立

『原创』[color=Blue]pdaXrom下ipk包的建立 [/color]
一般的linux手持设备使用的都是debian的ipk包,.ipk包就是一个包含两个tar.gz包和一个叫做debian-binary文件的一个.tar.gz包,比如我们用tar tzf 命令解开qpe-terminal_1.5.0-2_arm.ipk这个包的话,能看到目录下有debian-binary,control.tar.gz,和data.tar.gz三个文件,其中debian-binary这个文件是可有可无的,ipkg包管理器可以忽略它。control.tar.gz文件解压后的control文本文件中包含了这个包的名字,包的版本,包的描述,包的作者和包的依赖关系等等,还有重要的安装脚本也在里边。data.tar.gz包中包含了程序的具体文件和程序的各个文件的安装路径,解压这个包后可以看到里边也是一个linux的基本目录结构,因为就它一个程序,所以看上去比较简单。

分别看看三个文件中都包含了什么内容:
显示debian-binary文件的内容
$cat debian-binary
2.0
$
显示解压后的control文件内容:
$cat control
Package: qpe-terminal
Installed-Size: 196k
Filename: ./qpe-terminal_1.5.0-2_arm.ipk
Version: 1.5.0-2
Depends: qpe-base (1.5.0), ptydevs
Priority: optional
Section: qpe
Maintainer: Warwick Allison
Architecture: arm
Description: shell terminal
The terminal for the Qtopia.
$
解压data.tar.gz文件看它的目录结构:
$tar zxvf data.tar.gz
./opt/
./opt/QtPalmtop/
./opt/QtPalmtop/bin/
./opt/QtPalmtop/bin/embeddedkonsole
./opt/QtPalmtop/apps/
./opt/QtPalmtop/apps/Applications/
./opt/QtPalmtop/apps/Applications/embeddedkonsole.desktop
./opt/QtPalmtop/pics/
./opt/QtPalmtop/pics/konsole/
./opt/QtPalmtop/pics/konsole/down.png
./opt/QtPalmtop/pics/konsole/enter.png
./opt/QtPalmtop/pics/konsole/space.png
./opt/QtPalmtop/pics/konsole/tab.png
./opt/QtPalmtop/pics/konsole/up.png
./opt/QtPalmtop/etc/
./opt/QtPalmtop/etc/keytabs/
./opt/QtPalmtop/etc/keytabs/linux.keytab
./opt/QtPalmtop/etc/keytabs/vt100.keytab
$
可以看到这些文件都将会安装到/opt/QtPalmtop/下的不同文件夹中。

在上面的包中的control.tar.gz文件非常简单,只有一个control文件,其实比较复杂的包中会有
* preinst - 包的预安装测试,在真的包解压之前执行)
* postinst - 真实安装(在程序文件解压之后执行).
* prerm - 预卸载(在删除安装文件之前执行).
* postrm - 卸载(在安装文件被删除后执行).
* conffiles - 列出软件包的配置文件,在升级包的过程中不会被覆盖掉。

一个ipk包当然要包括程序的所有文件了,如果是图形介面程序的话,你最好给它添加一个能在桌面上显示的图标,这就包括一个写好的.desktop文件和这个程序的一个.png的图形文件,所以一个标准的包的结构应该是这样的:
my-package_1.0_arm.ipk
|—– debian.binary (可有可无)
|
|——control.tar.gz
| |—– control
| |—– conffiles (可有可无)
| |—– preinst (可有可无)
| |—– postinst (可有可无)
| |—– prerm (可有可无)
| |—– postrm (可有可无)
|
|—– data.tar.gz (这个压缩包包含你的程序的文件)
|—– /usr/share/application/myapp.desktop
|—– /usr/share/pixmaps/myapp.png

下面我们自己来做一个包,就拿连连看游戏在pdaXrom上的ipk包的制作来说明:
编译好以后,执行安装,用命令make install DESTDIR=/work,程序的文件就会安装到/work中,
cd /work
mkdir data
mv usr data
mkdir control
cd control
建立名叫control的文本文件(注意没有扩展名),control文件的内容这样写:

Package: llk_linux
Priority: optional
Section: extras
Version: 2.2
Architecture: arm
Maintainer: alpher
Depends: gtk2
Description:a small game but very interesting.

退到上一层目录
cd..
建立debian-binary文件,里边输入2.0即可。

这样我们的目录结构就有了,但是为了这个游戏能在桌面上的游戏类中显示并能启动程序的话,我们还需要做点额外工作。

mkdir data/usr/share/applications
cd data/usr/share/applications
在这个目录下建立llk_linux.desktop文件,pdaXrom中,一个典型的.desktop文件的内容是这样的

[Desktop Entry]
Exec=llk_linux
Icon=llk_linux.png
Terminal=false
Type=Application
Categories=Application;Games;llk_linux
StartupNotify=true
Encoding=UTF-8
X-Desktop-File-Install-Version=0.9
Name=llk_linux
Comment=llk_linux game
Name[zh_CN]=连连看
Comment[zh_CN]=连连看小游戏

复制程序图标:
mkdir /work/usr/share/pixmaps
复制/work/usr/local/share/pixmaps/llk_linux.png 到/work/usr/share/pixmaps/下

一切准备完毕,开始打包。进入/work目录,运行tar czf  data.tar.gz data
生成data.tar.gz文件;
运行 tar czf control.tar.gz control 生成control.tar.gz文件;
删除 data和control目录
rm -rf data
rm -rf control
退出一层目录
cd ..
打包:tar czf work.tar.gz work
改名:mv work.tar.gz llklinux_2.2_armv5tel.ipk
打包完成。

[[i] 本帖最后由 wjping119 于  04:32 PM 编辑 [/i]]
页: [1]
查看完整版本: 『原创』pdaXrom下ipk包的建立
Baidu