Commit 4c0c6cc65ff8403d81ecabbf178a3335152faaf2

[SPEC] Imported IPK1.0 specs
  
1===== IPK 1.0 Specification =====
2
3FIXME This document needs an update! Please not that IPK1.1 will have a completely different structure according to our current plans.
4
5==== General ====
6
7=== Format ===
8
9An IPK setup-package is a [[http://en.wikipedia.org/wiki/Xz | XZ-Compressed]] [[http://en.wikipedia.org/wiki/Tar_%28file_format%29 | TAR-Archive]]. An IPK-Package has the file extension .ipk (= **I**nstallation **p**ac**k**age), which was choosen because it is simple and easy to remember. Unfortunately the Opkg and Ipkg package manager for Linux cellphones uses the same extension. But because Listaller setups are targeted to Linux desktops and not to cellphones, it should not be much confusing. That the extension was used by some other very old applications does not matter too. (IPK was an image-format for Nintendo® games)
10Most of the IPK packages are named in the following pattern: (Install)appname-version_architecture.ipk e.g if the name of the application is "Sample" the version is "1.0" and the architecture is "i386" the package should be named InstallSample-10_i386.ipk or Sample-10_i386.ipk
11
12=== Structure ===
13
14The structure depends on the case if a package is GPG-signed.
15
16If a package is not signed, an IPK package contains the following files and folders at toplevel / (the main tarfile)
17
18^ Name ^ Type ^ Function ^
19| files | folder | Contains all files that have to be installed on the disk. |
20| pkgdata | folder | Contains some configuration file of the package, e.g. Licenses, descriptions file-lists, scripts etc. |
21| arcinfo.pin | file | Contains basic information about the package |
22
23
24If a package is signed, it contains a file signature.asc and a file content.tar at toplevel. Then tarfile contains the structure listed above. The ascfile contains the signature of content.tar. Listaller will detect automatically if a package is signed and check if the signature on the tarfile is valid. The directory "pkgdata", which contains all installation profiles is required. The "files" directory can have another name.
25
26==== The control file ====
27
28The arcinfo.pin file is nearly the same as the definition part in an IPS-Script. The package builder has changed file paths and removed some unnecessary elements, everything else is the same.
29An arcinfo.pin file may look like this:
30<code ips>
31IPK-Standard-Version: 1.0
32
33include:"/stuff/locale/setup-es.mo"
34
35Type: linstall
36Name: FooBar
37Version: 1.0-a
38License: include:"/stuff/COPYING"
39Description: include:"/stuff//desc.txt"
40Icon: /stuff/foobar-icon.png
41SDesc: A new foo-ish bar
42SDesc[de]: Einen neue foo-bar
43Group: Development
44Author: Foobar Project
45Maintainer: Pete Foo (
46 petefoo@example.org This e-mail address is being protected from spambots. You need JavaScript enabled to view it
47 )
48Disallow: ioNothing
49Profile[0]: Standard
50AppCMD: $INST/foo/foobar
51Architectures: i386
52DSupport: Ubuntu,openSUSE
53Dependencies[DEB]:
54 lynx
55 http://example.org/chd/dnd/package.deb (pkgname)
56Dependencies[RPM]:
57 lynx-rpm
58 http://example.org/chd/dnd/rpm/package.rpm (pkgname)
59Dependencies[Ubuntu]:
60 http://dfn.dl.sourceforge.net/sourceforge/listaller/listaller_0.1.16a_i386.deb (listaller)
61Dependencies[openSUSE]:
62 http://dfn.dl.sourceforge.net/sourceforge/listaller/listaller_0.1.16a_i386.rpm (listaller)
63Dependencies:
64 libc6.so
65 library2.so
66 /usr/lib/libnagra.so.4
67</code>
68
69All the main elements are described in the IPS specification. The following elements are IPK-specific or have different values:
70
71 * License, Description, Wizimage, Icon: The value has changed, it points now to a file in the IPK package. / is the package root. Licenses are usually saved in /stuff
72 * Include commands have also changed values.
73 * The !-Files part is missing.
74
75==== File information ====
76
77The information about installed files is saved in text files which are stored in the /stuff folder.
78Every file has a name following the sheme: fileinfo-.id The is replaced by the profile identification number. E.g. if the identification number is 2 the associated file-info file is named fileinfo-2.id The content of the fileinfo has the following structure:
79<code ips>
80>Destination
81Internal path to file
82MD5-hash
83Internal path to file
84MD5-hash
85...
86</code>
87A fileinfo-file can look like this: (extract)
88<code ips>
89>$INST/Songbird
90/data/Songbird/LICENSE.html
919b5151a0cfec60dbc0c3d548cfa3e713
92/data/Songbird/README.txt
93a92100275b9f71115dbe82a18af61392
94/data/Songbird/TRADEMARK.txt
95c82c36a2843c9ad08c42d7170a9c12d1
96/data/Songbird/songbird
9777e7be1db488bf3c4b5e8abd52d6eb23
98/data/Songbird/application.ini
99ff85febb38852501439ea623725241c0
100>$INST/Songbird/jsmodules
101/data/Songbird/jsmodules/sbLibraryUtils.jsm
102418a7400354cd1176264b5ec79f29be2
103</code>