1 This is qi.info, produced by makeinfo version 6.1 from qi.texi.
3 This user guide is for Qi (version 1.0-rc59, 4 April 2019), which is a
4 simple but well-integrated package manager.
6 Copyright © 2019 Matias Andres Fonzo, Santiago del Estero, Argentina.
8 Permission is granted to copy, distribute and/or modify this
9 document under the terms of the GNU Free Documentation License,
10 Version 1.3 or any later version published by the Free Software
11 Foundation; with no Invariant Sections, with no Front-Cover Texts,
12 and with no Back-Cover Texts. A copy of the license is included in
13 the section entitled "GNU Free Documentation License".
14 INFO-DIR-SECTION Package management
16 * Qi: (qi). A user-friendly package manager.
20 File: qi.info, Node: Top, Next: Introduction, Up: (dir)
25 This user guide is for Qi (version 1.0-rc59, 4 April 2019).
29 * Introduction:: Description and features of qi
30 * Invoking qi:: Command-line options
31 * The qirc file:: Configuration file
32 * Packages:: Managing packages
33 * Recipes:: Building packages
34 * Order files:: Handling build order
35 * Creating packages:: Making Qi packages
36 * Examining packages:: Debugging purposes
37 * Exit status:: Exit codes
38 * License:: GNU Free Documentation License
42 Copyright (C) 2019 Matias Fonzo.
44 Qi's home page can be found at <http://www.dragora.org>.
45 Send bug reports or suggestions to <dragora-users@nongnu.org>.
48 File: qi.info, Node: Introduction, Next: Invoking qi, Prev: Top, Up: Top
53 Qi is a simple but well-integrated package manager. It can create,
54 install, remove, and upgrade software packages. Qi produces binary
55 packages using recipes, which are files containing specific instructions
56 to build each package from source. Qi can manage multiple packages
57 under a single directory hierarchy. This method allows to maintain a
58 set of packages and multiple versions of them. This means that Qi could
59 be used as the main package manager or complement the existing one.
61 Qi offers a friendly command line interface, a global configuration
62 file, a simple recipe layout to deploy software packages; also works
63 with binary packages in parallel, speeding up installations and packages
64 in production. The format used for packages is a simplified but safe
65 POSIX pax archive compressed with lzip.
67 Qi is a modern (POSIX-compliant) shell script released under the
68 terms of the GNU General Public License. There are only two major
69 dependencies for the magic: graft(1) and tarlz(1), the rest is expected
70 to be found in any Unix-like system.
73 File: qi.info, Node: Invoking qi, Next: The qirc file, Prev: Introduction, Up: Top
78 This chapter describes the synopsis and command line options for invoke
81 Usage: qi [OPTION]... [FILE]...
83 One mandatory option specifies the operation that 'qi' should perform,
84 other options are meant to detail how this operation should be
87 qi supports the following options to operate:
90 Build package using recipe names.
93 Create .tlz package from directory.
102 Resolve build order through .order files.
105 Update packages (implies -i, -d and -p options).
108 Warn about files that will be linked.
111 Extract a package for debugging purposes.
113 There are common options between modes:
116 Do not read the configuration file.
118 This will ignore any value in the qirc file.
121 Package directory for installations.
123 This option sets '${packagedir}'.
125 Only valid for -i, -d, or -u options.
130 This option can force the build of a recipe, or force the update of
131 a pre-existing package.
133 Only valid for -b, -u options.
136 Target directory for symbolic links.
138 This option sets '${targetdir}'.
140 Only valid for -i, -d, or -u options.
143 Keep (don't delete) '${srcdir}' or '${destdir}' in build mode, keep
144 (don't delete) package directory in delete mode.
146 Only valid for -b, -d or -u options.
149 Prune conflicts on package installations.
151 This option may proceed with the package installation if one or
152 more conflicts occur.
155 Use the fully qualified named directory as the root directory for
156 all qi operations. The target directory and package directory will
157 be relative to the specified directory, including the log file for
161 Be verbose (a 2nd -v gives more).
163 Options for build mode (-b):
166 Where the packages produced are written.
168 This option sets '${outdir}'.
171 Where archives, patches, and recipes are expected.
173 This option sets '${worktree}'.
176 Where (compressed) sources will be found.
178 This option sets '${tardir}'.
183 Default value is obtained via uname(1) as 'uname -m'.
186 Parallel jobs for the compiler.
188 If not specified, default sets to 1.
191 Increment release number ('${release}' + 1).
193 It will be omitted if the -n option is being used.
196 Don't create a .tlz package.
199 Selects the option to skip completed recipes.
201 This means, in interactive mode, when the dialog to summarize
207 Print default directory locations.
209 This will print the target directory, package directory, working
210 tree, the directory for tarballs, and the output directory for the
214 Display the help describing the options and then exit.
217 Print the version number and license information. The version
218 number should be included in all bug reports.
220 Expected non-option arguments are package directories and regular files:
221 recipes or files ending in .tlz, .order. When FILE is -, qi can read
222 from the standard input. See examples in *note Packages::.
225 File: qi.info, Node: The qirc file, Next: Packages, Prev: Invoking qi, Up: Top
230 The global 'qirc' file offers a way to define variables and tools (such
231 as a download manager) for default use. This file is used by qi at
232 runtime, e.g., to build, install, remove or upgrade packages.
234 It has the following rules:
236 * Variables must be declared as 'name=value'.
238 * Declaration of values should only take one line, no line break.
240 * For security reasons, assignments like 'name=$var' are only
241 interpreted as literal.
243 The command line options related to the package directory and target
244 directory plus some of the options used for the build mode can override
245 some values in 'qirc'. See *note Invoking qi::.
247 The order in which qi looks for this file is:
249 1. '${HOME}/.qirc' Effective user.
251 2. '${sysconfdir}/qirc' System-wide.
253 If you intend to run qi as effective user, the file
254 '${sysconfdir}/qirc' could be copied to '${HOME}/.qirc' setting the
255 paths for '${packagedir}' and '${targetdir}' according to the '$HOME'.
258 File: qi.info, Node: Packages, Next: Recipes, Prev: The qirc file, Up: Top
263 A package is a suite of programs usually distributed in binary form
264 which may also contain manual pages, documentation, or any other file
265 associated to a specific software.
267 The package format used by qi is a simplified POSIX pax archive
268 compressed with lzip. The file extension for packages is '.tlz'.
270 Both package installation and package de-installation are managed using
271 two important (internal) variables: '${packagedir}' and '${targetdir}',
272 these values can be changed in the configuration file or via options.
274 '${packagedir}' is a common directory tree where the package contents
275 will be decompressed (will reside).
277 '${targetdir}' is a target directory where the links will be made by
278 graft(1) taking '${packagedir}/package_name' into account.
280 Packages are installed in self-contained directory trees and symbolic
281 links from a common area are made to the package files. This allows
282 multiple versions of the same package to coexist on the same system.
284 4.1 Package conflicts
285 =====================
287 All the links to install or remove a package are handled by graft(1).
288 Since multiple packages can be installed or removed at the same time,
289 certain conflicts may arise between the packages.
291 graft(1) defines a CONFLICT as one of the following conditions:
293 * If the package object is a directory and the target object exists
294 but is not a directory.
296 * If the package object is not a directory and the target object
297 exists and is not a symbolic link.
299 * If the package object is not a directory and the target object
300 exists and is a symbolic link to something other than the package
303 The default behavior of qi for an incoming package is to ABORT if a
304 conflict arises. When a package is going to be deleted, qi tells to
305 graft(1) to remove those parts that are not in conflict, leaving the
306 links to the belonging package. This behavior can be forced if the -p
309 4.2 Installing packages
310 =======================
312 To install a single package, simply type:
314 qi -i coreutils-8.30-i586+1.tlz
316 To install multiple packages at once, type:
318 qi -i gcc-8.3.0-i586+1.tlz rafaela-2.2-i586+1.tlz ...
320 Warn about the files that will be linked:
322 qi -w bash-5.0-i586+1.tlz
324 This is to verify the content of a package before installing it.
326 See the process of an installation (very verbose):
328 qi -i -v mariana-3.0-i586+1.tlz
330 A second -v gives more.
332 Installing package in a different location:
334 qi -r /media/floppy -i lzip-1.21-i586+1.tlz
336 The -r option assumes '${targetdir}' and '${packagedir}'. See:
338 qi -r /home/selk -P /pkgs -t / -i lzip-1.21-i586+1.tlz
340 In this case the content of "lzip-1.21-i586+1.tlz" will be
341 decompressed into '/home/selk/pkgs/lzip-1.21-i586+1'. Assuming that the
342 main binary for lzip is under
343 '/home/selk/pkgs/lzip-1.21-i586+1/usr/bin/' the target for "usr/bin"
344 will be created at '/home/selk'. Considering that you have exported the
345 'PATH' as '${HOME}/usr/bin', now the system is able to see the recent
348 Installing from a list of packages using standard input:
350 cat FILELIST.txt | qi -i -
352 The list of packages must contain full path names to be passed in the
354 /var/cache/qi/packages/x86_64/devel/tcl-8.6.9-x86_64+1.tlz
355 /var/cache/qi/packages/x86_64/devel/tk-8.6.9.1-x86_64+1.tlz
356 /var/cache/qi/packages/x86_64/devel/vala-0.42.3-x86_64+1.tlz
358 4.3 Removing packages
359 =====================
361 To remove a package, simply type:
363 qi -d xz-5.2.4-i586+1.tlz
365 Delete mode will match the package name using '${packagedir}' as prefix.
366 For example, if the value of '${packagedir}' is set to /usr/local/pkgs,
367 this will be equal to:
369 qi -d /usr/local/pkgs/xz-5.2.4-i586+1
371 Detailed output (very verbose):
373 qi -d -v /usr/local/pkgs/xz-5.2.4-i586+1
375 A second -v gives more.
377 By default the delete mode does not preserve a package directory after
378 removing its links from '${targetdir}', but this behavior can be changed
379 if the -k option is passed:
381 qi -d -k /usr/local/pkgs/lzip-1.21-i586+1
383 This means that the links to the package can be reactivated, later:
385 cd /usr/local/pkgs && graft -i lzip-1.21-i586+1
387 Removing package from a different location:
389 qi -r /home/cthulhu -P /pkgs -t / -d xz-5.2.4-i586+1
391 Removing a package using standard input:
393 echo "vala-0.42.3-x86_64+1" | qi -d -
395 This will match with the package directory.
397 4.4 Upgrading packages
398 ======================
400 The upgrade mode inherits the properties of the installation and removal
401 process. To make sure that a package is updated, the package is
402 installed in a temporary directory taking '${packagedir}' into account.
403 Once the incoming package is pre-installed, qi can proceed to search and
404 delete packages that have the same name (considered as previous ones).
405 Finally, the package is re-installed at its final location and the
406 temporary directory is removed.
408 To upgrade a package, just type:
410 qi -u gcc-9.0.1-i586+1.tlz
412 This will proceed to update "gcc-9.0.1-i586+1" removing other
413 versions of "gcc" (if any).
415 If you want to keep the package directories of versions found during the
416 upgrade process, just pass:
418 qi -u -k gcc-9.0.1-i586+1.tlz
420 To see the upgrade process (very verbose):
422 qi -u -v gcc-9.0.1-i586+1.tlz
424 A second -v gives more.
426 To force the upgrade of an existing package:
428 qi -u -f gcc-9.0.1-i586+1.tlz
430 4.4.1 Package blacklist
431 -----------------------
433 To implement general package facilities, either to install, remove or
434 maintain the hierarchy of packages in a clean manner, qi makes use of
435 the pruning operation via graft(1):
437 There is a risk if those are crucial packages for the proper
438 functioning of the system, because it implies the deactivation of
439 symbolic from the target directory, _especially_ when transitioning an
440 incoming package into its final location during upgrade.
442 A blacklist of package names has been devised for the case where a user
443 decides to upgrade all packages in the system, or just the crucial ones,
444 such as the C library.
446 The blacklist is related to the upgrade mode only, consists in
447 installing a package instead of updating it or removing previous
448 versions of it; the content of the package will be updated over the
449 existing content at '${packagedir}', while the existing links from
450 '${targetdir}' will be preserved. A pruning of links will be carried
451 out in order to re-link possible differences with the recent content,
452 this helps to avoid leaving dead links in the target directory.
454 Since the upgrade mode is also used to install a new package, the
455 mechanism for blacklist is to install a declared package if it does not
456 already exist. If it already exists, it is verified that the binary
457 package is newer than the package directory in order to perform an
460 Package names for the blacklist can be set from the configuration
463 ---------- Footnotes ----------
465 (1) The official guide for Graft can be found at
466 <http://peters.gormand.com.au/Home/tools/graft/graft.html>.
469 File: qi.info, Node: Recipes, Next: Order files, Prev: Packages, Up: Top
474 A recipe is a file telling qi what to do. Most often, the recipe tells
475 qi how to build a binary package from a source tarball.
477 A recipe has two parts: a list of variable definitions and a list of
478 sections. By convention, the syntax of a section is:
485 The section name is followed by parentheses, one newline and an
486 opening brace. The line finishing the section contains just a closing
487 brace. The section names or the function names currently recognized are
490 The 'build' section is an augmented shell script. This is the main
491 section (or *shell function*) which contains the instructions to build
492 and produce a package.
497 A "variable" is a *shell variable* defined either in 'qirc' or in a
498 recipe to represent a string of text, called the variable's "value".
499 These values are substituted by explicit request in the definitions of
500 other variables or in calls to external commands.
502 Variables can represent lists of file names, options to pass to
503 compilers, programs to run, directories to look in for source files,
504 directories to write output to, or anything else you can imagine.
506 Definitions of variables in qi have four levels of precedence.
507 Options which define variables from the command-line override those
508 specified in the 'qirc' file, while variables defined in the recipe
509 override those specified in 'qirc', taking priority over those variables
510 set by command-line options. Finally, the variables have default values
511 if they are not defined anywhere.
513 Options that set variables through the command-line can only
514 reference variables defined in 'qirc' and variables with default values.
516 Definitions of variables in 'qirc' can only reference variables
517 previously defined in 'qirc' and variables with default values.
519 Definitions of variables in the recipe can only reference variables
520 set by the command-line, variables previously defined in the recipe,
521 variables defined in 'qirc', and variables with default values.
523 5.2 Special variables
524 =====================
526 There are variables which can only be set using the command line options
527 or via 'qirc', there are other special variables which can be defined or
528 redefined in a recipe. See the following definitions:
530 'outdir' is the directory where the packages produced are written.
531 This variable can not be redefined in the recipe. Default sets to
532 '/var/cache/qi/packages'.
534 'worktree' is the working tree where archives, patches, and recipes
535 are expected. This variable can not be redefined in the recipe.
536 Default sets to '/usr/src/qi'.
538 'tardir' is defined in the recipe to the directory where the tarball
539 containing the source can be found. The full name of the tarball is
540 composed as '${tardir}/$tarname'. Its value is available in the recipe
541 as '${tardir}'; a value of . for 'tardir' sets it to the value of CWD
542 (Current Working Directory), this is where the recipe lives.
544 'arch' is the architecture to compose the package name. Its value is
545 available in the recipe as '${arch}'. Default value is the output of
548 'jobs' is the number of parallel jobs to pass to the compiler. Its
549 value is available in the recipe as '${jobs}'. The default value is 1.
551 The two variables '${srcdir}' and '${destdir}' can be set in the
552 recipe, as any other variable, but if they are not, qi uses default
553 values for them when building a package.
555 'srcdir' contains the source code to be compiled, and defaults to
556 '${program}-${version}'. 'destdir' is the place where the built package
557 will be installed, and defaults to '${TMPDIR}/package-${program}'.
559 If 'pkgname' is left undefined, the special variable 'program' is
560 assigned by default. If 'pkgversion' is left undefined, the special
561 variable 'version' is assigned by default.
563 'pkgname' and 'pkgversion' along with: 'version', 'arch', and
564 'release' are used to produce the name of the package in the form:
565 '${pkgname}-${pkgversion}-${arch}+${release}.tlz'
567 A special variable called 'replace' can be used to declare package
568 names that will be replaced at the time of installation.
570 A typical recipe contains the following variables:
572 * 'program': software name.
574 It matches the source name. It is also used to compose the name of
575 the package if '${pkgname}' is not specified.
577 * 'version': software version.
579 It matches the source name. It is also used to compose the version
580 of the package if '${pkgversion}' is not specified.
582 * 'arch': software architecture.
584 It is used to compose the architecture of the package in which it
587 * 'release': release number.
589 This is used to reflect the release number of the package. It is
590 recommended to increase this number after any significant change in
591 the recipe or post-install script.
593 Obtaining sources over the network must be declared in the recipe using
594 the 'fetch' variable. Use double quotes for separated values.
596 The variables 'netget' and 'rsync' can be defined in 'qirc' to
597 establish a network downloader in order to get the sources. If they are
598 not defined, qi uses default values:
600 'netget' is the general network downloader tool, defaults sets to
601 'wget -c -w1 -t3 --no-check-certificate'.
603 'rsync' is the network tool for sources containing the prefix for the
604 RSYNC protocol, default sets to 'rsync -v -a -L -z -i --progress'.
606 The variable 'description' is used to print the package description
607 when a package is installed.
609 A description has two parts: a brief description, and a long
610 description. By convention, the syntax of 'description' is:
618 The first line of the value represented is a brief description of the
619 software (called "blurb"). A blank line separates the _brief
620 description_ from the _long description_, it should contain a more
621 descriptive description of the software.
623 An example looks like:
626 The GNU core utilities.
628 The GNU core utilities are the basic file, shell and text manipulation
629 utilities of the GNU operating system. These are the core utilities
630 which are expected to exist on every operating system.
633 Please consider a length limit of 78 characters as maximum, because
634 the same one would be used on the meta file creation. See *note The
635 meta file: Recipes. section.
637 The 'homepage' variable is used to declare the main site or home
640 homepage=http://www.gnu.org/software/gcc
642 The variable 'license' is used for license information(1). Some code
643 in the program can be covered by license A, license B, or license C. For
644 "separate licensing" or "heterogeneous licensing", we suggest using *|*
645 for a disjunction, *&* for a conjunction (if that ever happens in a
646 significant way), and comma for heterogeneous licensing. Comma would
647 have lower precedence, plus added special terms.
649 license="LGPL, GPL | Artistic + added permission"
656 5.4 Building packages
657 =====================
659 A recipe is any valid regular file. qi sets priorities to read a
660 recipe, for example, the Current Working Directory has priority over the
661 working tree (or where the recipes reside); the '${worktree}/recipes' is
662 the second place where qi searchs for a recipe. We complete the
663 possibility of using the directory name to invoke a recipe if it
664 contains "recipe" as a valid file name.
666 To build a single package, type:
670 Multiple jobs can be passed to the compiler to speed up the build
673 qi -b -j3 x-apps/xterm
675 Update or install the package produced (if it is not already installed)
678 qi -b -j3 -u x-apps/xterm
680 Only process a recipe but do not create the binary package:
684 The options -i or -u have no effect when -n is given.
686 This can be useful to inspect the build process of recipe:
688 qi -b -k -n dict/aspell 2>&1 | tee aspell-buildlog.txt
690 The -k option could preserve the source directory and the destination
691 directory for later inspection. A log file of the build process will be
692 created redirecting both, standard error and standard output to tee(1).
694 5.5 Variables from the environment
695 ==================================
697 Qi has environment variables which can be used at build time:
699 The variable 'TMPDIR' sets the temporary directory for sources, which
700 is used for package extractions (see *note Examining packages::) and is
701 prepended to the value of '${srcdir}' and '${destdir}' in build mode.
702 By convention its default value is equal to '/usr/src/qi/build'.
704 The variables 'QICFLAGS', 'QICXXFLAGS', and 'QILDFLAGS' have no
705 effect by default. The environment variables such as 'CFLAGS',
706 'CXXFLAGS', and 'LDFLAGS' are unset at compile time:
708 Recommended practice is to set variables in the command line of
709 'configure' or _make(1)_ instead of exporting to the environment. As
712 Variables not defined in a site shell script can be set in the
713 environment passed to configure. However, some packages may run
714 configure again during the build, and the customized values of
715 these variables may be lost. In order to avoid this problem, you
716 should set them in the configure command line, using 'VAR=value'.
719 './configure CC=/usr/local2/bin/gcc'
721 <http://gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Defining-Variables.html>
723 Indeed, while configure can notice the definition of CC in
724 './configure CC=bizarre-cc', it is impossible to notice it in
725 'CC=bizarre-cc ./configure', which, unfortunately, is what most
730 configure: error: changes in the environment can compromise the
733 <http://gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Setting-Output-Variables.html>
735 It is not wise for makefiles to depend for their functioning on
736 environment variables set up outside their control, since this
737 would cause different users to get different results from the same
738 makefile. This is against the whole purpose of most makefiles.
740 <http://gnu.org/software/make/manual/make.html#Environment>
745 The "meta file" is a regular file created during the build mode, it
746 contains information about the package such as program name, program
747 version, release, fetch address, description, and other minor data
748 extracted from processed recipes. The name of the file is generated as
749 '${full_pkgname}.tlz.txt', and its purpose is to reflect essential
750 information to the user without having to look inside the package
753 The content of a meta file looks like:
756 # The Bourne Again SHell.
758 # Bash is an sh-compatible shell that incorporates useful features from
759 # the Korn shell (ksh) and C shell (csh). It is intended to conform to
760 # the IEEE POSIX P1003.2/ISO 9945.2 shell and tools standard.
762 # It offers functional improvements over sh for both programming and
766 QICFLAGS="-g0 -Os -mtune=generic -pipe"
767 QICXXFLAGS="-g0 -Os -mtune=generic -pipe"
772 blurb="The Bourne Again SHell."
773 homepage="http://www.gnu.org/software/bash"
775 fetch="ftp://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz"
778 Package descriptions are extracted from the variable 'description':
779 each line is interpreted literally and pre-formatted to fit in (exactly)
780 *80 columns*, plus the character '#' and a space is prefixed to every
783 In addition to the Special variables, there are implicit variables such
786 The 'blurb' variable is related to the special variable
787 'description'. Its value is composed using the first (substantial) line
788 of 'description', mentioned as the "brief description".
790 ---------- Footnotes ----------
792 (1) The proposal for 'license' was made by Richard M. Stallman at
793 <http://lists.gnu.org/archive/html/gnu-linux-libre/2016-05/msg00003.html>.
796 File: qi.info, Node: Order files, Next: Creating packages, Prev: Recipes, Up: Top
801 The order mode has the purpose of resolving the build order through
802 .order files. An order file contains a list of recipe names, by default
803 does not perform any action other than to print a resolved list in
804 descending order. For example, if *a* depends on *b* and *c*, and *c*
805 depends on *b* as well, the file might look like:
811 Each letter represents a recipe name, complete dependencies for the
812 first recipe name are listed in descending order, which is printed from
813 right to left, and removed from left to right:
821 Blank lines, colons and parentheses are simply ignored. Comment
822 lines beginning with '#' are allowed.
824 An order file could be used to build a series of packages, for example,
827 # Image handling libraries
829 libs/libjpeg-turbo: devel/nasm
830 x-libs/jasper: libs/libjpeg-turbo
831 libs/tiff: libs/libjpeg-turbo
833 To proceed with each recipe, we can type:
835 qi -o imglibs.order | qi -b -i -
837 The output of 'qi -o imglibs.order' tells to qi in which order it
838 should build the recipes:
846 File: qi.info, Node: Creating packages, Next: Examining packages, Prev: Order files, Up: Top
851 The "creation mode" is an internal function of qi to make new Qi
852 compatible compatible packages, the creation mode is selected by the -c
853 option. A package is produced using the contents of the Current
854 Directory, and the package file is written out.
856 Usage: qi -c [OUTPUT/PACKAGENAME.TLZ]...
858 The argument for the file name to be written must contain a fully
859 qualified named directory as the output directory where the package
860 produced will be written. The file name should be composed using the
861 full name: name-version-architecture+release.tlz
866 cd claws-mail-3.17.1-x86_64+1
867 qi -c /var/cache/qi/packages/x86_64/local/claws-mail-3.17.1-x86_64+1.tlz
869 In this case, the package "claws-mail-3.17.1-x86_64+1.tlz" will be
870 written into '/var/cache/qi/packages/x86_64/local/'.
872 All packages produced are complemented by a checksum file (.sha256).
875 File: qi.info, Node: Examining packages, Next: Exit status, Prev: Creating packages, Up: Top
880 The "extraction mode" serves to examine binary packages for debugging
881 purposes. The extraction mode is selected by the -x option. It
882 decompresses a package into a single directory, verifying its integrity
883 and preserving its properties.
885 Usage: qi -x [PACKAGENAME.TLZ]...
889 qi -x mksh-R56c-x86_64+1.tlz
891 This action will put the content of "mksh-R56c-x86_64+1.tlz" into a
892 single directory, this will be a private directory for the user who
894 requested the action, creation mode will be equal to *u=rwx,g=,o=
895 (0700)*. The package content will reside on this location, default mask
896 to deploy the content will be equal to *u=rwx,g=rwx,o=rwx (0000)*.
898 The creation of the custom directory is influenced by the value of the
902 File: qi.info, Node: Exit status, Next: License, Prev: Examining packages, Up: Top
907 All the exit codes are described in this chapter.
910 Successful completion (no errors).
915 - Help usage on illegal options or required arguments.
917 - Program needed by qi (prerequisite) is not available.
920 Command execution error:
922 This code is used to return the evaluation of external commands and
923 shell arguments in case of error.
926 Integrity check error for compressed files.
928 Compressed files means:
930 - Tarball files from tar(1). Supported extensions: .tar,
931 .tar.gz, .tgz, .tar.Z, .tar.bz2, .tbz2, .tbz, .tar.xz, .txz
933 - Tarball files from tarlz(1). Supported extensions: .tar.lz,
936 - Zip files from unzip(1). Supported extensions: .zip, .ZIP
938 - Gzip files from gzip(1). Supported extensions: .gz, .Z
940 - Bzip2 files from bzip2(1). Supported extensions: .bz2
942 - Lzip files from lzip(1). Supported extensions: .lz
944 - Xz files from xz(1). Supported extensions: .xz
947 File empty, not regular, or expected.
949 Commonly, it is expected:
951 - An argument for the mode of operation.
953 - A readable file or directory.
955 - A binary package (.tlz).
959 - An order file (.order).
961 - A protocol supported by the network downloader tool.
963 - A checksum file (.sha256).
966 Empty or not defined variable:
968 This code is used to report empty or undefined variables; usually,
969 variables coming from a recipe or assigned arrays that are tested.
972 Package already installed:
974 The package directory for an incoming .tlz package already exists.
977 Network manager error:
979 This code is used if the network downloader tool fails for some
983 File: qi.info, Node: License, Next: Index, Prev: Exit status, Up: Top
985 Appendix A GNU Free Documentation License
986 *****************************************
988 Version 1.3, 3 November 2008
990 Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
993 Everyone is permitted to copy and distribute verbatim copies
994 of this license document, but changing it is not allowed.
998 The purpose of this License is to make a manual, textbook, or other
999 functional and useful document "free" in the sense of freedom: to
1000 assure everyone the effective freedom to copy and redistribute it,
1001 with or without modifying it, either commercially or
1002 noncommercially. Secondarily, this License preserves for the
1003 author and publisher a way to get credit for their work, while not
1004 being considered responsible for modifications made by others.
1006 This License is a kind of "copyleft", which means that derivative
1007 works of the document must themselves be free in the same sense.
1008 It complements the GNU General Public License, which is a copyleft
1009 license designed for free software.
1011 We have designed this License in order to use it for manuals for
1012 free software, because free software needs free documentation: a
1013 free program should come with manuals providing the same freedoms
1014 that the software does. But this License is not limited to
1015 software manuals; it can be used for any textual work, regardless
1016 of subject matter or whether it is published as a printed book. We
1017 recommend this License principally for works whose purpose is
1018 instruction or reference.
1020 1. APPLICABILITY AND DEFINITIONS
1022 This License applies to any manual or other work, in any medium,
1023 that contains a notice placed by the copyright holder saying it can
1024 be distributed under the terms of this License. Such a notice
1025 grants a world-wide, royalty-free license, unlimited in duration,
1026 to use that work under the conditions stated herein. The
1027 "Document", below, refers to any such manual or work. Any member
1028 of the public is a licensee, and is addressed as "you". You accept
1029 the license if you copy, modify or distribute the work in a way
1030 requiring permission under copyright law.
1032 A "Modified Version" of the Document means any work containing the
1033 Document or a portion of it, either copied verbatim, or with
1034 modifications and/or translated into another language.
1036 A "Secondary Section" is a named appendix or a front-matter section
1037 of the Document that deals exclusively with the relationship of the
1038 publishers or authors of the Document to the Document's overall
1039 subject (or to related matters) and contains nothing that could
1040 fall directly within that overall subject. (Thus, if the Document
1041 is in part a textbook of mathematics, a Secondary Section may not
1042 explain any mathematics.) The relationship could be a matter of
1043 historical connection with the subject or with related matters, or
1044 of legal, commercial, philosophical, ethical or political position
1047 The "Invariant Sections" are certain Secondary Sections whose
1048 titles are designated, as being those of Invariant Sections, in the
1049 notice that says that the Document is released under this License.
1050 If a section does not fit the above definition of Secondary then it
1051 is not allowed to be designated as Invariant. The Document may
1052 contain zero Invariant Sections. If the Document does not identify
1053 any Invariant Sections then there are none.
1055 The "Cover Texts" are certain short passages of text that are
1056 listed, as Front-Cover Texts or Back-Cover Texts, in the notice
1057 that says that the Document is released under this License. A
1058 Front-Cover Text may be at most 5 words, and a Back-Cover Text may
1059 be at most 25 words.
1061 A "Transparent" copy of the Document means a machine-readable copy,
1062 represented in a format whose specification is available to the
1063 general public, that is suitable for revising the document
1064 straightforwardly with generic text editors or (for images composed
1065 of pixels) generic paint programs or (for drawings) some widely
1066 available drawing editor, and that is suitable for input to text
1067 formatters or for automatic translation to a variety of formats
1068 suitable for input to text formatters. A copy made in an otherwise
1069 Transparent file format whose markup, or absence of markup, has
1070 been arranged to thwart or discourage subsequent modification by
1071 readers is not Transparent. An image format is not Transparent if
1072 used for any substantial amount of text. A copy that is not
1073 "Transparent" is called "Opaque".
1075 Examples of suitable formats for Transparent copies include plain
1076 ASCII without markup, Texinfo input format, LaTeX input format,
1077 SGML or XML using a publicly available DTD, and standard-conforming
1078 simple HTML, PostScript or PDF designed for human modification.
1079 Examples of transparent image formats include PNG, XCF and JPG.
1080 Opaque formats include proprietary formats that can be read and
1081 edited only by proprietary word processors, SGML or XML for which
1082 the DTD and/or processing tools are not generally available, and
1083 the machine-generated HTML, PostScript or PDF produced by some word
1084 processors for output purposes only.
1086 The "Title Page" means, for a printed book, the title page itself,
1087 plus such following pages as are needed to hold, legibly, the
1088 material this License requires to appear in the title page. For
1089 works in formats which do not have any title page as such, "Title
1090 Page" means the text near the most prominent appearance of the
1091 work's title, preceding the beginning of the body of the text.
1093 The "publisher" means any person or entity that distributes copies
1094 of the Document to the public.
1096 A section "Entitled XYZ" means a named subunit of the Document
1097 whose title either is precisely XYZ or contains XYZ in parentheses
1098 following text that translates XYZ in another language. (Here XYZ
1099 stands for a specific section name mentioned below, such as
1100 "Acknowledgements", "Dedications", "Endorsements", or "History".)
1101 To "Preserve the Title" of such a section when you modify the
1102 Document means that it remains a section "Entitled XYZ" according
1105 The Document may include Warranty Disclaimers next to the notice
1106 which states that this License applies to the Document. These
1107 Warranty Disclaimers are considered to be included by reference in
1108 this License, but only as regards disclaiming warranties: any other
1109 implication that these Warranty Disclaimers may have is void and
1110 has no effect on the meaning of this License.
1114 You may copy and distribute the Document in any medium, either
1115 commercially or noncommercially, provided that this License, the
1116 copyright notices, and the license notice saying this License
1117 applies to the Document are reproduced in all copies, and that you
1118 add no other conditions whatsoever to those of this License. You
1119 may not use technical measures to obstruct or control the reading
1120 or further copying of the copies you make or distribute. However,
1121 you may accept compensation in exchange for copies. If you
1122 distribute a large enough number of copies you must also follow the
1123 conditions in section 3.
1125 You may also lend copies, under the same conditions stated above,
1126 and you may publicly display copies.
1128 3. COPYING IN QUANTITY
1130 If you publish printed copies (or copies in media that commonly
1131 have printed covers) of the Document, numbering more than 100, and
1132 the Document's license notice requires Cover Texts, you must
1133 enclose the copies in covers that carry, clearly and legibly, all
1134 these Cover Texts: Front-Cover Texts on the front cover, and
1135 Back-Cover Texts on the back cover. Both covers must also clearly
1136 and legibly identify you as the publisher of these copies. The
1137 front cover must present the full title with all words of the title
1138 equally prominent and visible. You may add other material on the
1139 covers in addition. Copying with changes limited to the covers, as
1140 long as they preserve the title of the Document and satisfy these
1141 conditions, can be treated as verbatim copying in other respects.
1143 If the required texts for either cover are too voluminous to fit
1144 legibly, you should put the first ones listed (as many as fit
1145 reasonably) on the actual cover, and continue the rest onto
1148 If you publish or distribute Opaque copies of the Document
1149 numbering more than 100, you must either include a machine-readable
1150 Transparent copy along with each Opaque copy, or state in or with
1151 each Opaque copy a computer-network location from which the general
1152 network-using public has access to download using public-standard
1153 network protocols a complete Transparent copy of the Document, free
1154 of added material. If you use the latter option, you must take
1155 reasonably prudent steps, when you begin distribution of Opaque
1156 copies in quantity, to ensure that this Transparent copy will
1157 remain thus accessible at the stated location until at least one
1158 year after the last time you distribute an Opaque copy (directly or
1159 through your agents or retailers) of that edition to the public.
1161 It is requested, but not required, that you contact the authors of
1162 the Document well before redistributing any large number of copies,
1163 to give them a chance to provide you with an updated version of the
1168 You may copy and distribute a Modified Version of the Document
1169 under the conditions of sections 2 and 3 above, provided that you
1170 release the Modified Version under precisely this License, with the
1171 Modified Version filling the role of the Document, thus licensing
1172 distribution and modification of the Modified Version to whoever
1173 possesses a copy of it. In addition, you must do these things in
1174 the Modified Version:
1176 A. Use in the Title Page (and on the covers, if any) a title
1177 distinct from that of the Document, and from those of previous
1178 versions (which should, if there were any, be listed in the
1179 History section of the Document). You may use the same title
1180 as a previous version if the original publisher of that
1181 version gives permission.
1183 B. List on the Title Page, as authors, one or more persons or
1184 entities responsible for authorship of the modifications in
1185 the Modified Version, together with at least five of the
1186 principal authors of the Document (all of its principal
1187 authors, if it has fewer than five), unless they release you
1188 from this requirement.
1190 C. State on the Title page the name of the publisher of the
1191 Modified Version, as the publisher.
1193 D. Preserve all the copyright notices of the Document.
1195 E. Add an appropriate copyright notice for your modifications
1196 adjacent to the other copyright notices.
1198 F. Include, immediately after the copyright notices, a license
1199 notice giving the public permission to use the Modified
1200 Version under the terms of this License, in the form shown in
1203 G. Preserve in that license notice the full lists of Invariant
1204 Sections and required Cover Texts given in the Document's
1207 H. Include an unaltered copy of this License.
1209 I. Preserve the section Entitled "History", Preserve its Title,
1210 and add to it an item stating at least the title, year, new
1211 authors, and publisher of the Modified Version as given on the
1212 Title Page. If there is no section Entitled "History" in the
1213 Document, create one stating the title, year, authors, and
1214 publisher of the Document as given on its Title Page, then add
1215 an item describing the Modified Version as stated in the
1218 J. Preserve the network location, if any, given in the Document
1219 for public access to a Transparent copy of the Document, and
1220 likewise the network locations given in the Document for
1221 previous versions it was based on. These may be placed in the
1222 "History" section. You may omit a network location for a work
1223 that was published at least four years before the Document
1224 itself, or if the original publisher of the version it refers
1225 to gives permission.
1227 K. For any section Entitled "Acknowledgements" or "Dedications",
1228 Preserve the Title of the section, and preserve in the section
1229 all the substance and tone of each of the contributor
1230 acknowledgements and/or dedications given therein.
1232 L. Preserve all the Invariant Sections of the Document, unaltered
1233 in their text and in their titles. Section numbers or the
1234 equivalent are not considered part of the section titles.
1236 M. Delete any section Entitled "Endorsements". Such a section
1237 may not be included in the Modified Version.
1239 N. Do not retitle any existing section to be Entitled
1240 "Endorsements" or to conflict in title with any Invariant
1243 O. Preserve any Warranty Disclaimers.
1245 If the Modified Version includes new front-matter sections or
1246 appendices that qualify as Secondary Sections and contain no
1247 material copied from the Document, you may at your option designate
1248 some or all of these sections as invariant. To do this, add their
1249 titles to the list of Invariant Sections in the Modified Version's
1250 license notice. These titles must be distinct from any other
1253 You may add a section Entitled "Endorsements", provided it contains
1254 nothing but endorsements of your Modified Version by various
1255 parties--for example, statements of peer review or that the text
1256 has been approved by an organization as the authoritative
1257 definition of a standard.
1259 You may add a passage of up to five words as a Front-Cover Text,
1260 and a passage of up to 25 words as a Back-Cover Text, to the end of
1261 the list of Cover Texts in the Modified Version. Only one passage
1262 of Front-Cover Text and one of Back-Cover Text may be added by (or
1263 through arrangements made by) any one entity. If the Document
1264 already includes a cover text for the same cover, previously added
1265 by you or by arrangement made by the same entity you are acting on
1266 behalf of, you may not add another; but you may replace the old
1267 one, on explicit permission from the previous publisher that added
1270 The author(s) and publisher(s) of the Document do not by this
1271 License give permission to use their names for publicity for or to
1272 assert or imply endorsement of any Modified Version.
1274 5. COMBINING DOCUMENTS
1276 You may combine the Document with other documents released under
1277 this License, under the terms defined in section 4 above for
1278 modified versions, provided that you include in the combination all
1279 of the Invariant Sections of all of the original documents,
1280 unmodified, and list them all as Invariant Sections of your
1281 combined work in its license notice, and that you preserve all
1282 their Warranty Disclaimers.
1284 The combined work need only contain one copy of this License, and
1285 multiple identical Invariant Sections may be replaced with a single
1286 copy. If there are multiple Invariant Sections with the same name
1287 but different contents, make the title of each such section unique
1288 by adding at the end of it, in parentheses, the name of the
1289 original author or publisher of that section if known, or else a
1290 unique number. Make the same adjustment to the section titles in
1291 the list of Invariant Sections in the license notice of the
1294 In the combination, you must combine any sections Entitled
1295 "History" in the various original documents, forming one section
1296 Entitled "History"; likewise combine any sections Entitled
1297 "Acknowledgements", and any sections Entitled "Dedications". You
1298 must delete all sections Entitled "Endorsements."
1300 6. COLLECTIONS OF DOCUMENTS
1302 You may make a collection consisting of the Document and other
1303 documents released under this License, and replace the individual
1304 copies of this License in the various documents with a single copy
1305 that is included in the collection, provided that you follow the
1306 rules of this License for verbatim copying of each of the documents
1307 in all other respects.
1309 You may extract a single document from such a collection, and
1310 distribute it individually under this License, provided you insert
1311 a copy of this License into the extracted document, and follow this
1312 License in all other respects regarding verbatim copying of that
1315 7. AGGREGATION WITH INDEPENDENT WORKS
1317 A compilation of the Document or its derivatives with other
1318 separate and independent documents or works, in or on a volume of a
1319 storage or distribution medium, is called an "aggregate" if the
1320 copyright resulting from the compilation is not used to limit the
1321 legal rights of the compilation's users beyond what the individual
1322 works permit. When the Document is included in an aggregate, this
1323 License does not apply to the other works in the aggregate which
1324 are not themselves derivative works of the Document.
1326 If the Cover Text requirement of section 3 is applicable to these
1327 copies of the Document, then if the Document is less than one half
1328 of the entire aggregate, the Document's Cover Texts may be placed
1329 on covers that bracket the Document within the aggregate, or the
1330 electronic equivalent of covers if the Document is in electronic
1331 form. Otherwise they must appear on printed covers that bracket
1332 the whole aggregate.
1336 Translation is considered a kind of modification, so you may
1337 distribute translations of the Document under the terms of section
1338 4. Replacing Invariant Sections with translations requires special
1339 permission from their copyright holders, but you may include
1340 translations of some or all Invariant Sections in addition to the
1341 original versions of these Invariant Sections. You may include a
1342 translation of this License, and all the license notices in the
1343 Document, and any Warranty Disclaimers, provided that you also
1344 include the original English version of this License and the
1345 original versions of those notices and disclaimers. In case of a
1346 disagreement between the translation and the original version of
1347 this License or a notice or disclaimer, the original version will
1350 If a section in the Document is Entitled "Acknowledgements",
1351 "Dedications", or "History", the requirement (section 4) to
1352 Preserve its Title (section 1) will typically require changing the
1357 You may not copy, modify, sublicense, or distribute the Document
1358 except as expressly provided under this License. Any attempt
1359 otherwise to copy, modify, sublicense, or distribute it is void,
1360 and will automatically terminate your rights under this License.
1362 However, if you cease all violation of this License, then your
1363 license from a particular copyright holder is reinstated (a)
1364 provisionally, unless and until the copyright holder explicitly and
1365 finally terminates your license, and (b) permanently, if the
1366 copyright holder fails to notify you of the violation by some
1367 reasonable means prior to 60 days after the cessation.
1369 Moreover, your license from a particular copyright holder is
1370 reinstated permanently if the copyright holder notifies you of the
1371 violation by some reasonable means, this is the first time you have
1372 received notice of violation of this License (for any work) from
1373 that copyright holder, and you cure the violation prior to 30 days
1374 after your receipt of the notice.
1376 Termination of your rights under this section does not terminate
1377 the licenses of parties who have received copies or rights from you
1378 under this License. If your rights have been terminated and not
1379 permanently reinstated, receipt of a copy of some or all of the
1380 same material does not give you any rights to use it.
1382 10. FUTURE REVISIONS OF THIS LICENSE
1384 The Free Software Foundation may publish new, revised versions of
1385 the GNU Free Documentation License from time to time. Such new
1386 versions will be similar in spirit to the present version, but may
1387 differ in detail to address new problems or concerns. See
1388 <http://www.gnu.org/copyleft/>.
1390 Each version of the License is given a distinguishing version
1391 number. If the Document specifies that a particular numbered
1392 version of this License "or any later version" applies to it, you
1393 have the option of following the terms and conditions either of
1394 that specified version or of any later version that has been
1395 published (not as a draft) by the Free Software Foundation. If the
1396 Document does not specify a version number of this License, you may
1397 choose any version ever published (not as a draft) by the Free
1398 Software Foundation. If the Document specifies that a proxy can
1399 decide which future versions of this License can be used, that
1400 proxy's public statement of acceptance of a version permanently
1401 authorizes you to choose that version for the Document.
1405 "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
1406 World Wide Web server that publishes copyrightable works and also
1407 provides prominent facilities for anybody to edit those works. A
1408 public wiki that anybody can edit is an example of such a server.
1409 A "Massive Multiauthor Collaboration" (or "MMC") contained in the
1410 site means any set of copyrightable works thus published on the MMC
1413 "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
1414 license published by Creative Commons Corporation, a not-for-profit
1415 corporation with a principal place of business in San Francisco,
1416 California, as well as future copyleft versions of that license
1417 published by that same organization.
1419 "Incorporate" means to publish or republish a Document, in whole or
1420 in part, as part of another Document.
1422 An MMC is "eligible for relicensing" if it is licensed under this
1423 License, and if all works that were first published under this
1424 License somewhere other than this MMC, and subsequently
1425 incorporated in whole or in part into the MMC, (1) had no cover
1426 texts or invariant sections, and (2) were thus incorporated prior
1427 to November 1, 2008.
1429 The operator of an MMC Site may republish an MMC contained in the
1430 site under CC-BY-SA on the same site at any time before August 1,
1431 2009, provided the MMC is eligible for relicensing.
1433 ADDENDUM: How to use this License for your documents
1434 ====================================================
1436 To use this License in a document you have written, include a copy of
1437 the License in the document and put the following copyright and license
1438 notices just after the title page:
1440 Copyright (C) YEAR YOUR NAME.
1441 Permission is granted to copy, distribute and/or modify this document
1442 under the terms of the GNU Free Documentation License, Version 1.3
1443 or any later version published by the Free Software Foundation;
1444 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
1445 Texts. A copy of the license is included in the section entitled ``GNU
1446 Free Documentation License''.
1448 If you have Invariant Sections, Front-Cover Texts and Back-Cover
1449 Texts, replace the "with...Texts." line with this:
1451 with the Invariant Sections being LIST THEIR TITLES, with
1452 the Front-Cover Texts being LIST, and with the Back-Cover Texts
1455 If you have Invariant Sections without Cover Texts, or some other
1456 combination of the three, merge those two alternatives to suit the
1459 If your document contains nontrivial examples of program code, we
1460 recommend releasing these examples in parallel under your choice of free
1461 software license, such as the GNU General Public License, to permit
1462 their use in free software.
1465 File: qi.info, Node: Index, Prev: License, Up: Top
1473 * configuration file: The qirc file. (line 6)
1474 * environment variables: Recipes. (line 229)
1475 * exit codes: Exit status. (line 6)
1476 * handling build order: Order files. (line 6)
1477 * introduction: Introduction. (line 6)
1478 * invocation: Invoking qi. (line 6)
1479 * managing packages: Packages. (line 6)
1480 * package blacklist: Packages. (line 176)
1481 * package build: Recipes. (line 191)
1482 * package conflicts: Packages. (line 30)
1483 * package creation: Creating packages. (line 6)
1484 * package de-installation: Packages. (line 104)
1485 * package examination: Examining packages. (line 6)
1486 * package installation: Packages. (line 55)
1487 * package upgrade: Packages. (line 143)
1488 * recipes: Recipes. (line 6)
1489 * special variables: Recipes. (line 58)
1490 * the meta file: Recipes. (line 277)
1491 * variables: Recipes. (line 29)
1492 * writing recipes: Recipes. (line 186)
1498 Node: Introduction
\x7f1646
1499 Node: Invoking qi
\x7f2815
1500 Node: The qirc file
\x7f6233
1501 Node: Packages
\x7f7310
1502 Ref: Packages-Footnote-1
\x7f14346
1503 Node: Recipes
\x7f14459
1504 Ref: Recipes-Footnote-1
\x7f26620
1505 Node: Order files
\x7f26765
1506 Node: Creating packages
\x7f28067
1507 Node: Examining packages
\x7f29107
1508 Node: Exit status
\x7f30017
1509 Node: License
\x7f31957
1510 Node: Index
\x7f57073