View previous topic :: View next topic |
Author |
Message |
wjping119
Joined: 28 Oct 2005 Posts: 87
小企鹅: 197
|
Posted: 2005-Dec-15 Thu, am12:46 |
|
Post subject: [分享]pdaXrom下ipk包的建立 |
|
pdaXrom下ipk包的建立
参考文档 http://forum.zaurus.cn/viewtopic.php?t=130
.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
|—– /usr/apps/***/Myapp/AppInfo.xml
|-- - /usr/apps/***/Myapp/AppRun
下面我们自己来做一个包,就拿连连看游戏在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/下
因为这是个游戏程序,要放到游戏菜单中
mkdir /work/usr/apps/Games/llk_linux
在llk_linux文件夹中建立AppInfo.xml文件,内容如下:
<?xml version="1.0"?>
<AppInfo>
<Summary>llk_linux</Summary>
<About>
<Purpose></Purpose>
</About>
</AppInfo>
同样在这个目录中建立AppRun文件,内容如下:
AppRun的文件内容:
#!/bin/sh
exec llk_linux
然后执行执行chmod a+x AppRun
一切准备完毕,开始打包。进入/work目录,运行tar czf data data.tar.gz
生成data.tar.gz文件;
运行 tar czf control control.tar.gz 生成control.tar.gz文件;
删除 data和control目录
rm -rf data
rm -rf control
退出一层目录
cd ..
打包:tar czf work work.tar.gz
改名:mv work.tar.gz llklinux_2.2_armv5tel.ipk
打包完成。
参考文档 http://forum.zaurus.cn/viewtopic.php?t=130 |
|
Back to top |
|
goodstyle
Joined: 27 Oct 2005 Posts: 393
小企鹅: 238
|
Posted: 2005-Dec-15 Thu, am10:56 |
|
Post subject: |
|
前段時間才說不會package呢,你學的很快啊!  |
|
Back to top |
|
wjping119
Joined: 28 Oct 2005 Posts: 87
小企鹅: 197
|
Posted: 2005-Dec-15 Thu, pm4:07 |
|
Post subject: |
|
虽然举的例子是连连看,但是我还没有打这个包  |
|
Back to top |
|
goodstyle
Joined: 27 Oct 2005 Posts: 393
小企鹅: 238
|
Posted: 2005-Dec-15 Thu, pm4:41 |
|
Post subject: |
|
wjping119 wrote: | 虽然举的例子是连连看,但是我还没有打这个包  |
还以为你做了呢!崩溃ing
呵呵,还是验证下,可惜我现在没用RC12 |
|
Back to top |
|
wjping119
Joined: 28 Oct 2005 Posts: 87
小企鹅: 197
|
Posted: 2005-Dec-15 Thu, pm8:03 |
|
Post subject: |
|
我只能说你也懒得够呛。
上面就是拿连连看做的例子
而我提供下载的连连看也是一个tar.gz包,虽然后缀名是tgz
打包的所有过程用的都是tar,cacko上没有吗,不可以做?
我是有ipk包就用ipk包,没有我就用tgz包,这是slackware的包管理方式,简单好用,我喜欢。 |
|
Back to top |
|
|