"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.