Commit 4c0c6cc65ff8403d81ecabbf178a3335152faaf2
- Diff rendering mode:
- inline
- side by side
docs/ipk-specification-v1.txt
(103 / 0)
|   | |||
| 1 | ===== IPK 1.0 Specification ===== | ||
| 2 | |||
| 3 | FIXME 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 | |||
| 9 | An 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) | ||
| 10 | Most 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 | |||
| 14 | The structure depends on the case if a package is GPG-signed. | ||
| 15 | |||
| 16 | If 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 | |||
| 24 | If 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 | |||
| 28 | The 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. | ||
| 29 | An arcinfo.pin file may look like this: | ||
| 30 | <code ips> | ||
| 31 | IPK-Standard-Version: 1.0 | ||
| 32 | |||
| 33 | include:"/stuff/locale/setup-es.mo" | ||
| 34 | |||
| 35 | Type: linstall | ||
| 36 | Name: FooBar | ||
| 37 | Version: 1.0-a | ||
| 38 | License: include:"/stuff/COPYING" | ||
| 39 | Description: include:"/stuff//desc.txt" | ||
| 40 | Icon: /stuff/foobar-icon.png | ||
| 41 | SDesc: A new foo-ish bar | ||
| 42 | SDesc[de]: Einen neue foo-bar | ||
| 43 | Group: Development | ||
| 44 | Author: Foobar Project | ||
| 45 | Maintainer: Pete Foo ( | ||
| 46 | petefoo@example.org This e-mail address is being protected from spambots. You need JavaScript enabled to view it | ||
| 47 | ) | ||
| 48 | Disallow: ioNothing | ||
| 49 | Profile[0]: Standard | ||
| 50 | AppCMD: $INST/foo/foobar | ||
| 51 | Architectures: i386 | ||
| 52 | DSupport: Ubuntu,openSUSE | ||
| 53 | Dependencies[DEB]: | ||
| 54 | lynx | ||
| 55 | http://example.org/chd/dnd/package.deb (pkgname) | ||
| 56 | Dependencies[RPM]: | ||
| 57 | lynx-rpm | ||
| 58 | http://example.org/chd/dnd/rpm/package.rpm (pkgname) | ||
| 59 | Dependencies[Ubuntu]: | ||
| 60 | http://dfn.dl.sourceforge.net/sourceforge/listaller/listaller_0.1.16a_i386.deb (listaller) | ||
| 61 | Dependencies[openSUSE]: | ||
| 62 | http://dfn.dl.sourceforge.net/sourceforge/listaller/listaller_0.1.16a_i386.rpm (listaller) | ||
| 63 | Dependencies: | ||
| 64 | libc6.so | ||
| 65 | library2.so | ||
| 66 | /usr/lib/libnagra.so.4 | ||
| 67 | </code> | ||
| 68 | |||
| 69 | All 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 | |||
| 77 | The information about installed files is saved in text files which are stored in the /stuff folder. | ||
| 78 | Every 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 | ||
| 81 | Internal path to file | ||
| 82 | MD5-hash | ||
| 83 | Internal path to file | ||
| 84 | MD5-hash | ||
| 85 | ... | ||
| 86 | </code> | ||
| 87 | A fileinfo-file can look like this: (extract) | ||
| 88 | <code ips> | ||
| 89 | >$INST/Songbird | ||
| 90 | /data/Songbird/LICENSE.html | ||
| 91 | 9b5151a0cfec60dbc0c3d548cfa3e713 | ||
| 92 | /data/Songbird/README.txt | ||
| 93 | a92100275b9f71115dbe82a18af61392 | ||
| 94 | /data/Songbird/TRADEMARK.txt | ||
| 95 | c82c36a2843c9ad08c42d7170a9c12d1 | ||
| 96 | /data/Songbird/songbird | ||
| 97 | 77e7be1db488bf3c4b5e8abd52d6eb23 | ||
| 98 | /data/Songbird/application.ini | ||
| 99 | ff85febb38852501439ea623725241c0 | ||
| 100 | >$INST/Songbird/jsmodules | ||
| 101 | /data/Songbird/jsmodules/sbLibraryUtils.jsm | ||
| 102 | 418a7400354cd1176264b5ec79f29be2 | ||
| 103 | </code> |

