"Fossies" - the Fresh Open Source Software Archive 
Member "unipkg-0.6.5/README" (16 Dec 2005, 6451 Bytes) of package /linux/privat/old/unipkg-0.6.5.tar.gz:
As a special service "Fossies" has tried to format the requested text file into HTML format (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
1 _ _ _ ___ _ _____
2 | | | |_ _ (_) | _ \ |/ / __|
3 | |_| | ' \| | | _/ ' < (_ |
4 \___/|_||_|_| |_| |_|\_\___|
5
6 I. Introduction
7
8 UniPKG is a small and modular package manager, that allows you common actions
9 with your packages. It also handles various package formats, such as RPM
10 or DEB. It also allows you to use multiple backends.
11
12 Please, visit us at IRC, #unipkg on FreeNode network.
13
14
15 II. Usage
16
17 The unipkg usage is well-described in manual page. The config is also
18 described in respective manual page. Please note that the uniget code included
19 is not to be used; it's only for potential developers.
20
21
22 III. Development
23
24 Most of the code is quite reasonable by now. However, the work at netlib has
25 just started. The goal of netlib is to provide user ability to use remote
26 package repositories, not unlike apt or yum.
27
28 Common questions:
29
30 Q: Okay, so how are you going to handle more than one repository?
31
32 I'll ask user if he wants to take a package out of repositories with the same
33 repository handler; they will be taken in the order specified in config. If a
34 package is missing even in all of these, I'll ask user again, if he wants to
35 use different repositories.
36
37 Q: How will user specify the repositories?
38
39 Because of different format of repositories, I'll require three informations:
40 a) Absolute 'root' path to the repository.
41 b) Relative path from the a) to the package list.
42 c) Name of the repository handler.
43
44 This may change later; I may add one more call to the repository handler, which
45 will properly extract this information from distro-specific repository specs.
46
47 Q: How far is actually the development?
48
49 Unfortunately, not very far. We can download the list of Debian packages and
50 parse them and that's it. We can not yet calculate dependencies, nor parse
51 config, parse other than Debain repositories etc. etc.
52
53 To make this clear: It is not even remotely ready to use.
54
55
56 IV. Preinst, postinst, preremove, postremove scripts
57
58 There are multiple issues with these scripts. First and foremost, it's
59 possible that they won't work for you because they may need distribution
60 specific tools (especially Debian.)
61
62 Second, DO NOT run scripts if you are installing anywhere else than to /.
63
64 The reason is that the scripts actually often use absolute pathnames (Slack
65 is an exception), therefore although your data would be in /foo/bar, the scripts
66 would attempt to run in /.
67
68
69 V. Specific issues
70
71 a) base binaries
72
73 unipkg It seems like you cannot compile statically both unipkg and the
74 backends.
75
76
77 unipkg-trans The unipkg-trans is still very, very immature. It allows some
78 basic testing, debugging and package transportation, but you
79 have been warned.
80
81 uniget DOES NOT WORK. It's been included to show that it's undergoing
82 development.
83
84
85 b) backends
86
87 unipkg-file The unipkg-file backend has only one drawback, the generated
88 database may be easily turned inconsistent. It was REMOVED
89 since 0.6.5.
90
91
92 unipkg-debdb You can only read packages. Doing package listing is a little
93 bit slow, since both status and filelist has to be read
94 for each package. On the other hand, finding a package (find,
95 findfile, info commands) is pretty fast (unless, of course,
96 you match every package), since status file is being parsed
97 only for the matched packages. If you want the listing faster,
98 then you want to make the readpkg() function faster.
99
100 When using this database, use eg. /var/lib/dpkg as path, not
101 /var/lib/dpkg/info or /var/lib/dpkg/status, because we expect
102 some particular dir format.
103
104 Note that with larger ammount of packages, things may be slower,
105 since Debian stores directories as well, while unipkg does not.
106 Therefore, we are filtering out the directories.
107
108 unipkg-slackdb You can only read packages.
109
110 Note that with larger ammount of packages, things may be slower,
111 since Slackware stores directories as well, while unipkg does
112 not. Therefore, we are filtering out the directories. In the
113 Slackware distribution, the common 'devs' package is a very
114 good example -- it takes about ten seconds to parse fully.
115
116
117 unipkg-sqlite If you use a db that has table `packages' and/or `files', which
118 doesn't have the wanted format, you're in trouble. There also
119 may be issues with package handling scripts.
120
121 It is REALLY slow, mostly by using sqlite3_exec instead of
122 prepare and bind. However, as mentioned on the website, the
123 unipkg-sqlite is quite a new thing at this moment.
124
125 It is currently not compiled by default, you have to call
126 make unipkg-sqlite
127 in unipkglib directory.
128
129
130 unipkg-directory
131 The fastest and least fragile backend so far. Since 0.5 it is
132 set as default backend.
133
134
135 c) package handlers
136
137 unipkg-arch Properly handles ArchLinux format. There may be issues with
138 handling scripts.
139
140 unipkg-rpm Format supported; scripts like triggers ommited. Both gzip and
141 bzip2 supported.
142
143
144 unipkg-deb Flawless support of format. Gzipped, bzip2ed and uncompressed
145 data archives supported, gzipped control archives supported, as
146 requires standard.
147
148
149 unipkg-slack This one has been very tricky. Since slack does not include
150 symlinks in tar archive and includes it in doinst.sh instead,
151 I've decided to parse doinst.sh in order to get list of files.
152
153 In the end, two parsers have been made, one is trivial and
154 parses only exactly what makepkg builds. The other is by far
155 more complex and somewhat parses the shell script -- although
156 very primitively. This allows even less strictly built
157 doinst.sh being parsed correctly. Per default, the complex
158 one is compiled in. If you do not like so or if it is buggy,
159 comment out this in unipkg-slack.c: #define SLACK_COMPLEX
160
161 Identification was done by checking for /install folder. If it
162 is not present, it is not considered slackware package.
163
164 Also, only tgz format is accepted. The tbz and others are not
165 parsed (yet).
166
167 GNU tar extensions are not parsed yet.
168
169
170 VI. Thanks to
171
172 Thanks for code contribution to k-zed. Thanks for RPM consultation to channel
173 #rpm on FreeNode. Thanks for Slack consultation to Larhzu and channel
174 #slackware on IRCNet. Thanks for extra testing to redtime, jinx and Larhzu.
175
176
177 VII. Contact
178
179 See http://web.isteve.bofh.cz/unipkg/ for contact information.
180
181 Please, visit us at #unipkg on FreeNode network.