1 This is qi.info, produced by makeinfo version 6.6 from qi.texi.
3 This user guide is for Qi (version 1.0-rc59, 1 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, 1 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 creates,
54 install, remove, and upgrade software packages. Qi produces binary
55 packages using recipe names, these are files containing specific
56 instructions to build every source. Qi can manage multiple packages
57 under a single directory hierarchy, this method allows to maintain a set
58 of packages and multiple versions of them. This means that Qi could be
59 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 used format 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 omit any value on 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}' on build mode, keep
144 (don't delete) package directory on 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 produced packages 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
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 arguments beyond of options are package directories and regular
221 files: recipes or files ending in .tlz, .order. When FILE is -, qi can
222 read 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 for 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 ends in .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 co-exist on the one 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 directory of found versions 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 enforce 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 to deactivate symbolic
439 links from the target directory, _especially_ when transitioning an
440 incoming package into its final location during upgrade.
442 A blacklist for declare package names has been devised for this cases,
443 in case that a user decides to upgrade all packages in the system or,
444 just the crucial ones, 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 carried out
451 in order to re-link possible differences with the recent content, this
452 helps to avoid having 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 to 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 in, 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 settled by options via command-line. Finally, the variables have
511 default values 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 settled by 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 produced packages 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}'. Default sets to '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 (substantial) line of the value is a brief description of
619 the software (called "blurb"). A newline follows to separate the _brief
620 description_ from the _long description_.
622 An example looks like:
625 The GNU core utilities.
627 The GNU core utilities are the basic file, shell and text manipulation
628 utilities of the GNU operating system. These are the core utilities
629 which are expected to exist on every operating system.
632 Please consider a length limit of 78 characters as maximum, because
633 the same one would be used on the meta file creation. See *note The
634 meta file: Recipes. section.
636 The 'homepage' variable is used to declare the main site or home
639 homepage=http://www.gnu.org/software/gcc
641 The variable 'license' is used for license information(1). Some code
642 in the program can be covered by license A, license B, or license C. For
643 "separate licensing" or "heterogeneous licensing", we suggest using *|*
644 for a disjunction, *&* for a conjunction (if that ever happens in a
645 significant way), and comma for heterogeneous licensing. Comma would
646 have lower precedence, plus added special terms.
648 license="LGPL, GPL | Artistic + added permission"
650 5.3 Building packages
651 =====================
653 A recipe is any valid regular file, qi sets priorities to read a recipe,
654 for example, the Current Working Directory has priority over the working
655 tree (or where the recipes reside); the '${worktree}/recipes' is the
656 second place where to find a recipe, we complete the possibility of
657 using the directory name to invoke a recipe if it contains "recipe" as a
660 To build a single package, type:
664 Multiple jobs can be passed to the compiler for speed up the build
667 qi -b -j3 x-apps/xterm
669 Update or install the produced package (if it is not already installed)
672 qi -b -j3 -u x-apps/xterm
674 Only process a recipe but do not create the binary package:
678 The options -i or -u have no effect when -n is given.
680 This can be useful to inspect the build process of recipe:
682 qi -b -k -n dict/aspell 2>&1 | tee aspell-buildlog.txt
684 The -k option could preserve the source directory and the destination
685 directory for later inspection. A log file of the build process will be
686 created redirecting both, standard error and standard output to tee(1).
688 5.4 Variables from the environment
689 ==================================
691 Qi has environment variables which can be used at build time:
693 The variable 'TMPDIR' sets the temporary directory for sources, which
694 is used for package extractions (see *note Examining packages::) and to
695 prepend the value of '${srcdir}' and '${destdir}' on build mode. By
696 convention its default value is equal to '/usr/src/qi/build'.
698 The variables 'QICFLAGS', 'QICXXFLAGS', and 'QILDFLAGS' have no
699 effect by default. The environment variables such as 'CFLAGS',
700 'CXXFLAGS', and 'LDFLAGS' are unset at compile time:
702 Recommended practices is to set variables in front of 'configure' or in
703 front of _make(1)_ instead of exporting to the environment. As follows:
705 Variables not defined in a site shell script can be set in the
706 environment passed to configure. However, some packages may run
707 configure again during the build, and the customized values of
708 these variables may be lost. In order to avoid this problem, you
709 should set them in the configure command line, using 'VAR=value'.
712 './configure CC=/usr/local2/bin/gcc'
714 <http://gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Defining-Variables.html>
716 Indeed, while configure can notice the definition of CC in
717 './configure CC=bizarre-cc', it is impossible to notice it in
718 'CC=bizarre-cc ./configure', which, unfortunately, is what most
723 configure: error: changes in the environment can compromise the
726 <http://gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Setting-Output-Variables.html>
728 It is not wise for makefiles to depend for their functioning on
729 environment variables set up outside their control, since this
730 would cause different users to get different results from the same
731 makefile. This is against the whole purpose of most makefiles.
733 <http://gnu.org/software/make/manual/make.html#Environment>
738 The "meta file" is a regular file created during the build mode, it
739 contains information about the package such as program name, program
740 version, release, fetch address, description, and other minor data
741 extracted from processed recipes. The name of the file is generated as
742 '${full_pkgname}.tlz.txt', it has the purpose to reflect essential
743 information to the user without having to look inside the package
746 The content of a meta file looks like:
749 # The Bourne Again SHell.
751 # Bash is an sh-compatible shell that incorporates useful features from
752 # the Korn shell (ksh) and C shell (csh). It is intended to conform to
753 # the IEEE POSIX P1003.2/ISO 9945.2 shell and tools standard.
755 # It offers functional improvements over sh for both programming and
759 QICFLAGS="-g0 -Os -mtune=generic -pipe"
760 QICXXFLAGS="-g0 -Os -mtune=generic -pipe"
765 blurb="The Bourne Again SHell."
766 homepage="http://www.gnu.org/software/bash"
768 fetch="ftp://ftp.gnu.org/gnu/bash/bash-5.0.tar.gz"
771 Package descriptions are extracted from the variable 'description':
772 each line is interpreted literally and pre-formatted to fit in (exactly)
773 *80 columns*, plus the character '#' and a space is prefixed to every
776 In addition to the Special variables, there are implicit variables such
779 The 'blurb' variable is related to the special variable
780 'description'. Its value is composed using the first (substantial) line
781 of 'description', mentioned as the "brief description".
783 ---------- Footnotes ----------
785 (1) The proposal for 'license' was made by Richard M. Stallman at
786 <http://lists.gnu.org/archive/html/gnu-linux-libre/2016-05/msg00003.html>.
789 File: qi.info, Node: Order files, Next: Creating packages, Prev: Recipes, Up: Top
794 The order mode has the purpose to resolve the build order through .order
795 files. An order file contains a list of recipe names, by default does
796 not perform any action other than to print a resolved list in descending
797 order. For example, if *a* depends on *b* and *c*, and *c* depends on
798 *b* as well, the file might look like:
804 Each letter represents a recipe name, complete dependencies for the
805 first recipe name are listed in descending order, which is printed from
806 right to left, and removed from left to right:
814 Declaration of blank lines, colons, parentheses, and end of line are
815 simply ignored. Comments are allowed for lines that begin with '#'.
817 An order file could be used to build a serie of packages, for example,
820 # Image handling libraries
822 libs/libjpeg-turbo: devel/nasm
823 x-libs/jasper: libs/libjpeg-turbo
824 libs/tiff: libs/libjpeg-turbo
826 To proceed with each recipe, we can type:
828 qi -o imglibs.order | qi -b -i -
830 The output of 'qi -o imglibs.order' tells to qi in which order it
831 should build the recipes:
839 File: qi.info, Node: Creating packages, Next: Examining packages, Prev: Order files, Up: Top
844 The "creation mode" is an internal function of qi to make new Qi
845 compatible packages, the creation mode is available through the -c
846 option. A package is produced using the contents of the Current
847 Directory, finally the package is written out to the file name.
849 Usage: qi -c [OUTPUT/PACKAGENAME.TLZ]...
851 The argument for the file name to be written must contain a fully
852 qualified named directory as the output directory where the produced
853 package will be written. The file name should be composed using the
854 full name: name-version-architecture+release.tlz
859 cd claws-mail-3.17.1-x86_64+1
860 qi -c /var/cache/qi/packages/x86_64/local/claws-mail-3.17.1-x86_64+1.tlz
862 In this case, the package "claws-mail-3.17.1-x86_64+1.tlz" will be
863 written into '/var/cache/qi/packages/x86_64/local/'.
865 All produced packages are complemented by a checksum file (.sha256).
868 File: qi.info, Node: Examining packages, Next: Exit status, Prev: Creating packages, Up: Top
873 The "extraction mode" is available using the -x option. It serves to
874 examine binary packages for debugging purposes, which consists of
875 decompressing a package into a single directory, verifying its integrity
876 and preserving its properties.
878 Usage: qi -x [PACKAGENAME.TLZ]...
882 qi -x mksh-R56c-x86_64+1.tlz
884 This action will put the content of "mksh-R56c-x86_64+1.tlz" into a
885 single directory, this will be a private directory for the user who
886 requested the action, creation mode will be equal to *u=,g=rwx,o=rwx
887 (0700)*. The package content will reside on this location, default mask
888 to deploy the content will be equal to *u=rwx,g=rwx,o=rwx (0000)*.
890 The creation of the custom directory is influenced by the value of the
894 File: qi.info, Node: Exit status, Next: License, Prev: Examining packages, Up: Top
899 All the conditions of exit codes are described in this chapter.
902 Successful completion (no errors).
907 - Help usage on illegal options or required arguments.
909 - Program needed by qi (prerequisite) is not available.
912 Command execution error:
914 This code is used to return the evaluation of external commands and
915 shell arguments in case of error.
918 Integrity check error for compressed files.
920 Compressed files means:
922 - Tarball files from tar(1). Supported extensions: .tar,
923 .tar.gz, .tgz, .tar.Z, .tar.bz2, .tbz2, .tbz, .tar.xz, .txz
925 - Tarballs files from tarlz(1). Supported extensions: .tar.lz,
928 - Zip files from unzip(1). Supported extensions: .zip, .ZIP
930 - Gzip files from gzip(1). Supported extensions: .gz, .Z
932 - Bzip2 files from bzip2(1). Supported extensions: .bz2
934 - Lzip files from lzip(1). Supported extensions: .lz
936 - Xz files from xz(1). Supported extensions: .xz
939 File empty, not regular, or expected.
941 Commonly, it is expected:
943 - An argument for the mode of operation.
945 - A readable file or directory.
947 - A binary package (.tlz).
951 - An order file (.order).
953 - A protocol supported by the network downloader tool.
955 - A checksum file (.sha256).
958 Empty or not defined variable:
960 This code is used to report empty or undefined variables; usually,
961 variables coming from a recipe or assigned arrays that are tested.
964 Package already installed:
966 The package directory for an incoming .tlz package that already
970 Network manager error:
972 This code is used if the network downloader tool fails for some
976 File: qi.info, Node: License, Next: Index, Prev: Exit status, Up: Top
978 Appendix A GNU Free Documentation License
979 *****************************************
981 Version 1.3, 3 November 2008
983 Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
986 Everyone is permitted to copy and distribute verbatim copies
987 of this license document, but changing it is not allowed.
991 The purpose of this License is to make a manual, textbook, or other
992 functional and useful document "free" in the sense of freedom: to
993 assure everyone the effective freedom to copy and redistribute it,
994 with or without modifying it, either commercially or
995 noncommercially. Secondarily, this License preserves for the
996 author and publisher a way to get credit for their work, while not
997 being considered responsible for modifications made by others.
999 This License is a kind of "copyleft", which means that derivative
1000 works of the document must themselves be free in the same sense.
1001 It complements the GNU General Public License, which is a copyleft
1002 license designed for free software.
1004 We have designed this License in order to use it for manuals for
1005 free software, because free software needs free documentation: a
1006 free program should come with manuals providing the same freedoms
1007 that the software does. But this License is not limited to
1008 software manuals; it can be used for any textual work, regardless
1009 of subject matter or whether it is published as a printed book. We
1010 recommend this License principally for works whose purpose is
1011 instruction or reference.
1013 1. APPLICABILITY AND DEFINITIONS
1015 This License applies to any manual or other work, in any medium,
1016 that contains a notice placed by the copyright holder saying it can
1017 be distributed under the terms of this License. Such a notice
1018 grants a world-wide, royalty-free license, unlimited in duration,
1019 to use that work under the conditions stated herein. The
1020 "Document", below, refers to any such manual or work. Any member
1021 of the public is a licensee, and is addressed as "you". You accept
1022 the license if you copy, modify or distribute the work in a way
1023 requiring permission under copyright law.
1025 A "Modified Version" of the Document means any work containing the
1026 Document or a portion of it, either copied verbatim, or with
1027 modifications and/or translated into another language.
1029 A "Secondary Section" is a named appendix or a front-matter section
1030 of the Document that deals exclusively with the relationship of the
1031 publishers or authors of the Document to the Document's overall
1032 subject (or to related matters) and contains nothing that could
1033 fall directly within that overall subject. (Thus, if the Document
1034 is in part a textbook of mathematics, a Secondary Section may not
1035 explain any mathematics.) The relationship could be a matter of
1036 historical connection with the subject or with related matters, or
1037 of legal, commercial, philosophical, ethical or political position
1040 The "Invariant Sections" are certain Secondary Sections whose
1041 titles are designated, as being those of Invariant Sections, in the
1042 notice that says that the Document is released under this License.
1043 If a section does not fit the above definition of Secondary then it
1044 is not allowed to be designated as Invariant. The Document may
1045 contain zero Invariant Sections. If the Document does not identify
1046 any Invariant Sections then there are none.
1048 The "Cover Texts" are certain short passages of text that are
1049 listed, as Front-Cover Texts or Back-Cover Texts, in the notice
1050 that says that the Document is released under this License. A
1051 Front-Cover Text may be at most 5 words, and a Back-Cover Text may
1052 be at most 25 words.
1054 A "Transparent" copy of the Document means a machine-readable copy,
1055 represented in a format whose specification is available to the
1056 general public, that is suitable for revising the document
1057 straightforwardly with generic text editors or (for images composed
1058 of pixels) generic paint programs or (for drawings) some widely
1059 available drawing editor, and that is suitable for input to text
1060 formatters or for automatic translation to a variety of formats
1061 suitable for input to text formatters. A copy made in an otherwise
1062 Transparent file format whose markup, or absence of markup, has
1063 been arranged to thwart or discourage subsequent modification by
1064 readers is not Transparent. An image format is not Transparent if
1065 used for any substantial amount of text. A copy that is not
1066 "Transparent" is called "Opaque".
1068 Examples of suitable formats for Transparent copies include plain
1069 ASCII without markup, Texinfo input format, LaTeX input format,
1070 SGML or XML using a publicly available DTD, and standard-conforming
1071 simple HTML, PostScript or PDF designed for human modification.
1072 Examples of transparent image formats include PNG, XCF and JPG.
1073 Opaque formats include proprietary formats that can be read and
1074 edited only by proprietary word processors, SGML or XML for which
1075 the DTD and/or processing tools are not generally available, and
1076 the machine-generated HTML, PostScript or PDF produced by some word
1077 processors for output purposes only.
1079 The "Title Page" means, for a printed book, the title page itself,
1080 plus such following pages as are needed to hold, legibly, the
1081 material this License requires to appear in the title page. For
1082 works in formats which do not have any title page as such, "Title
1083 Page" means the text near the most prominent appearance of the
1084 work's title, preceding the beginning of the body of the text.
1086 The "publisher" means any person or entity that distributes copies
1087 of the Document to the public.
1089 A section "Entitled XYZ" means a named subunit of the Document
1090 whose title either is precisely XYZ or contains XYZ in parentheses
1091 following text that translates XYZ in another language. (Here XYZ
1092 stands for a specific section name mentioned below, such as
1093 "Acknowledgements", "Dedications", "Endorsements", or "History".)
1094 To "Preserve the Title" of such a section when you modify the
1095 Document means that it remains a section "Entitled XYZ" according
1098 The Document may include Warranty Disclaimers next to the notice
1099 which states that this License applies to the Document. These
1100 Warranty Disclaimers are considered to be included by reference in
1101 this License, but only as regards disclaiming warranties: any other
1102 implication that these Warranty Disclaimers may have is void and
1103 has no effect on the meaning of this License.
1107 You may copy and distribute the Document in any medium, either
1108 commercially or noncommercially, provided that this License, the
1109 copyright notices, and the license notice saying this License
1110 applies to the Document are reproduced in all copies, and that you
1111 add no other conditions whatsoever to those of this License. You
1112 may not use technical measures to obstruct or control the reading
1113 or further copying of the copies you make or distribute. However,
1114 you may accept compensation in exchange for copies. If you
1115 distribute a large enough number of copies you must also follow the
1116 conditions in section 3.
1118 You may also lend copies, under the same conditions stated above,
1119 and you may publicly display copies.
1121 3. COPYING IN QUANTITY
1123 If you publish printed copies (or copies in media that commonly
1124 have printed covers) of the Document, numbering more than 100, and
1125 the Document's license notice requires Cover Texts, you must
1126 enclose the copies in covers that carry, clearly and legibly, all
1127 these Cover Texts: Front-Cover Texts on the front cover, and
1128 Back-Cover Texts on the back cover. Both covers must also clearly
1129 and legibly identify you as the publisher of these copies. The
1130 front cover must present the full title with all words of the title
1131 equally prominent and visible. You may add other material on the
1132 covers in addition. Copying with changes limited to the covers, as
1133 long as they preserve the title of the Document and satisfy these
1134 conditions, can be treated as verbatim copying in other respects.
1136 If the required texts for either cover are too voluminous to fit
1137 legibly, you should put the first ones listed (as many as fit
1138 reasonably) on the actual cover, and continue the rest onto
1141 If you publish or distribute Opaque copies of the Document
1142 numbering more than 100, you must either include a machine-readable
1143 Transparent copy along with each Opaque copy, or state in or with
1144 each Opaque copy a computer-network location from which the general
1145 network-using public has access to download using public-standard
1146 network protocols a complete Transparent copy of the Document, free
1147 of added material. If you use the latter option, you must take
1148 reasonably prudent steps, when you begin distribution of Opaque
1149 copies in quantity, to ensure that this Transparent copy will
1150 remain thus accessible at the stated location until at least one
1151 year after the last time you distribute an Opaque copy (directly or
1152 through your agents or retailers) of that edition to the public.
1154 It is requested, but not required, that you contact the authors of
1155 the Document well before redistributing any large number of copies,
1156 to give them a chance to provide you with an updated version of the
1161 You may copy and distribute a Modified Version of the Document
1162 under the conditions of sections 2 and 3 above, provided that you
1163 release the Modified Version under precisely this License, with the
1164 Modified Version filling the role of the Document, thus licensing
1165 distribution and modification of the Modified Version to whoever
1166 possesses a copy of it. In addition, you must do these things in
1167 the Modified Version:
1169 A. Use in the Title Page (and on the covers, if any) a title
1170 distinct from that of the Document, and from those of previous
1171 versions (which should, if there were any, be listed in the
1172 History section of the Document). You may use the same title
1173 as a previous version if the original publisher of that
1174 version gives permission.
1176 B. List on the Title Page, as authors, one or more persons or
1177 entities responsible for authorship of the modifications in
1178 the Modified Version, together with at least five of the
1179 principal authors of the Document (all of its principal
1180 authors, if it has fewer than five), unless they release you
1181 from this requirement.
1183 C. State on the Title page the name of the publisher of the
1184 Modified Version, as the publisher.
1186 D. Preserve all the copyright notices of the Document.
1188 E. Add an appropriate copyright notice for your modifications
1189 adjacent to the other copyright notices.
1191 F. Include, immediately after the copyright notices, a license
1192 notice giving the public permission to use the Modified
1193 Version under the terms of this License, in the form shown in
1196 G. Preserve in that license notice the full lists of Invariant
1197 Sections and required Cover Texts given in the Document's
1200 H. Include an unaltered copy of this License.
1202 I. Preserve the section Entitled "History", Preserve its Title,
1203 and add to it an item stating at least the title, year, new
1204 authors, and publisher of the Modified Version as given on the
1205 Title Page. If there is no section Entitled "History" in the
1206 Document, create one stating the title, year, authors, and
1207 publisher of the Document as given on its Title Page, then add
1208 an item describing the Modified Version as stated in the
1211 J. Preserve the network location, if any, given in the Document
1212 for public access to a Transparent copy of the Document, and
1213 likewise the network locations given in the Document for
1214 previous versions it was based on. These may be placed in the
1215 "History" section. You may omit a network location for a work
1216 that was published at least four years before the Document
1217 itself, or if the original publisher of the version it refers
1218 to gives permission.
1220 K. For any section Entitled "Acknowledgements" or "Dedications",
1221 Preserve the Title of the section, and preserve in the section
1222 all the substance and tone of each of the contributor
1223 acknowledgements and/or dedications given therein.
1225 L. Preserve all the Invariant Sections of the Document, unaltered
1226 in their text and in their titles. Section numbers or the
1227 equivalent are not considered part of the section titles.
1229 M. Delete any section Entitled "Endorsements". Such a section
1230 may not be included in the Modified Version.
1232 N. Do not retitle any existing section to be Entitled
1233 "Endorsements" or to conflict in title with any Invariant
1236 O. Preserve any Warranty Disclaimers.
1238 If the Modified Version includes new front-matter sections or
1239 appendices that qualify as Secondary Sections and contain no
1240 material copied from the Document, you may at your option designate
1241 some or all of these sections as invariant. To do this, add their
1242 titles to the list of Invariant Sections in the Modified Version's
1243 license notice. These titles must be distinct from any other
1246 You may add a section Entitled "Endorsements", provided it contains
1247 nothing but endorsements of your Modified Version by various
1248 parties--for example, statements of peer review or that the text
1249 has been approved by an organization as the authoritative
1250 definition of a standard.
1252 You may add a passage of up to five words as a Front-Cover Text,
1253 and a passage of up to 25 words as a Back-Cover Text, to the end of
1254 the list of Cover Texts in the Modified Version. Only one passage
1255 of Front-Cover Text and one of Back-Cover Text may be added by (or
1256 through arrangements made by) any one entity. If the Document
1257 already includes a cover text for the same cover, previously added
1258 by you or by arrangement made by the same entity you are acting on
1259 behalf of, you may not add another; but you may replace the old
1260 one, on explicit permission from the previous publisher that added
1263 The author(s) and publisher(s) of the Document do not by this
1264 License give permission to use their names for publicity for or to
1265 assert or imply endorsement of any Modified Version.
1267 5. COMBINING DOCUMENTS
1269 You may combine the Document with other documents released under
1270 this License, under the terms defined in section 4 above for
1271 modified versions, provided that you include in the combination all
1272 of the Invariant Sections of all of the original documents,
1273 unmodified, and list them all as Invariant Sections of your
1274 combined work in its license notice, and that you preserve all
1275 their Warranty Disclaimers.
1277 The combined work need only contain one copy of this License, and
1278 multiple identical Invariant Sections may be replaced with a single
1279 copy. If there are multiple Invariant Sections with the same name
1280 but different contents, make the title of each such section unique
1281 by adding at the end of it, in parentheses, the name of the
1282 original author or publisher of that section if known, or else a
1283 unique number. Make the same adjustment to the section titles in
1284 the list of Invariant Sections in the license notice of the
1287 In the combination, you must combine any sections Entitled
1288 "History" in the various original documents, forming one section
1289 Entitled "History"; likewise combine any sections Entitled
1290 "Acknowledgements", and any sections Entitled "Dedications". You
1291 must delete all sections Entitled "Endorsements."
1293 6. COLLECTIONS OF DOCUMENTS
1295 You may make a collection consisting of the Document and other
1296 documents released under this License, and replace the individual
1297 copies of this License in the various documents with a single copy
1298 that is included in the collection, provided that you follow the
1299 rules of this License for verbatim copying of each of the documents
1300 in all other respects.
1302 You may extract a single document from such a collection, and
1303 distribute it individually under this License, provided you insert
1304 a copy of this License into the extracted document, and follow this
1305 License in all other respects regarding verbatim copying of that
1308 7. AGGREGATION WITH INDEPENDENT WORKS
1310 A compilation of the Document or its derivatives with other
1311 separate and independent documents or works, in or on a volume of a
1312 storage or distribution medium, is called an "aggregate" if the
1313 copyright resulting from the compilation is not used to limit the
1314 legal rights of the compilation's users beyond what the individual
1315 works permit. When the Document is included in an aggregate, this
1316 License does not apply to the other works in the aggregate which
1317 are not themselves derivative works of the Document.
1319 If the Cover Text requirement of section 3 is applicable to these
1320 copies of the Document, then if the Document is less than one half
1321 of the entire aggregate, the Document's Cover Texts may be placed
1322 on covers that bracket the Document within the aggregate, or the
1323 electronic equivalent of covers if the Document is in electronic
1324 form. Otherwise they must appear on printed covers that bracket
1325 the whole aggregate.
1329 Translation is considered a kind of modification, so you may
1330 distribute translations of the Document under the terms of section
1331 4. Replacing Invariant Sections with translations requires special
1332 permission from their copyright holders, but you may include
1333 translations of some or all Invariant Sections in addition to the
1334 original versions of these Invariant Sections. You may include a
1335 translation of this License, and all the license notices in the
1336 Document, and any Warranty Disclaimers, provided that you also
1337 include the original English version of this License and the
1338 original versions of those notices and disclaimers. In case of a
1339 disagreement between the translation and the original version of
1340 this License or a notice or disclaimer, the original version will
1343 If a section in the Document is Entitled "Acknowledgements",
1344 "Dedications", or "History", the requirement (section 4) to
1345 Preserve its Title (section 1) will typically require changing the
1350 You may not copy, modify, sublicense, or distribute the Document
1351 except as expressly provided under this License. Any attempt
1352 otherwise to copy, modify, sublicense, or distribute it is void,
1353 and will automatically terminate your rights under this License.
1355 However, if you cease all violation of this License, then your
1356 license from a particular copyright holder is reinstated (a)
1357 provisionally, unless and until the copyright holder explicitly and
1358 finally terminates your license, and (b) permanently, if the
1359 copyright holder fails to notify you of the violation by some
1360 reasonable means prior to 60 days after the cessation.
1362 Moreover, your license from a particular copyright holder is
1363 reinstated permanently if the copyright holder notifies you of the
1364 violation by some reasonable means, this is the first time you have
1365 received notice of violation of this License (for any work) from
1366 that copyright holder, and you cure the violation prior to 30 days
1367 after your receipt of the notice.
1369 Termination of your rights under this section does not terminate
1370 the licenses of parties who have received copies or rights from you
1371 under this License. If your rights have been terminated and not
1372 permanently reinstated, receipt of a copy of some or all of the
1373 same material does not give you any rights to use it.
1375 10. FUTURE REVISIONS OF THIS LICENSE
1377 The Free Software Foundation may publish new, revised versions of
1378 the GNU Free Documentation License from time to time. Such new
1379 versions will be similar in spirit to the present version, but may
1380 differ in detail to address new problems or concerns. See
1381 <http://www.gnu.org/copyleft/>.
1383 Each version of the License is given a distinguishing version
1384 number. If the Document specifies that a particular numbered
1385 version of this License "or any later version" applies to it, you
1386 have the option of following the terms and conditions either of
1387 that specified version or of any later version that has been
1388 published (not as a draft) by the Free Software Foundation. If the
1389 Document does not specify a version number of this License, you may
1390 choose any version ever published (not as a draft) by the Free
1391 Software Foundation. If the Document specifies that a proxy can
1392 decide which future versions of this License can be used, that
1393 proxy's public statement of acceptance of a version permanently
1394 authorizes you to choose that version for the Document.
1398 "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
1399 World Wide Web server that publishes copyrightable works and also
1400 provides prominent facilities for anybody to edit those works. A
1401 public wiki that anybody can edit is an example of such a server.
1402 A "Massive Multiauthor Collaboration" (or "MMC") contained in the
1403 site means any set of copyrightable works thus published on the MMC
1406 "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
1407 license published by Creative Commons Corporation, a not-for-profit
1408 corporation with a principal place of business in San Francisco,
1409 California, as well as future copyleft versions of that license
1410 published by that same organization.
1412 "Incorporate" means to publish or republish a Document, in whole or
1413 in part, as part of another Document.
1415 An MMC is "eligible for relicensing" if it is licensed under this
1416 License, and if all works that were first published under this
1417 License somewhere other than this MMC, and subsequently
1418 incorporated in whole or in part into the MMC, (1) had no cover
1419 texts or invariant sections, and (2) were thus incorporated prior
1420 to November 1, 2008.
1422 The operator of an MMC Site may republish an MMC contained in the
1423 site under CC-BY-SA on the same site at any time before August 1,
1424 2009, provided the MMC is eligible for relicensing.
1426 ADDENDUM: How to use this License for your documents
1427 ====================================================
1429 To use this License in a document you have written, include a copy of
1430 the License in the document and put the following copyright and license
1431 notices just after the title page:
1433 Copyright (C) YEAR YOUR NAME.
1434 Permission is granted to copy, distribute and/or modify this document
1435 under the terms of the GNU Free Documentation License, Version 1.3
1436 or any later version published by the Free Software Foundation;
1437 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
1438 Texts. A copy of the license is included in the section entitled ``GNU
1439 Free Documentation License''.
1441 If you have Invariant Sections, Front-Cover Texts and Back-Cover
1442 Texts, replace the "with...Texts." line with this:
1444 with the Invariant Sections being LIST THEIR TITLES, with
1445 the Front-Cover Texts being LIST, and with the Back-Cover Texts
1448 If you have Invariant Sections without Cover Texts, or some other
1449 combination of the three, merge those two alternatives to suit the
1452 If your document contains nontrivial examples of program code, we
1453 recommend releasing these examples in parallel under your choice of free
1454 software license, such as the GNU General Public License, to permit
1455 their use in free software.
1458 File: qi.info, Node: Index, Prev: License, Up: Top
1466 * configuration file: The qirc file. (line 6)
1467 * environment variables: Recipes. (line 223)
1468 * exit codes: Exit status. (line 6)
1469 * handling build order: Order files. (line 6)
1470 * introduction: Introduction. (line 6)
1471 * invocation: Invoking qi. (line 6)
1472 * managing packages: Packages. (line 6)
1473 * package blacklist: Packages. (line 176)
1474 * package build: Recipes. (line 185)
1475 * package conflicts: Packages. (line 30)
1476 * package creation: Creating packages. (line 6)
1477 * package de-installation: Packages. (line 104)
1478 * package examination: Examining packages. (line 6)
1479 * package installation: Packages. (line 55)
1480 * package upgrade: Packages. (line 143)
1481 * recipes: Recipes. (line 6)
1482 * special variables: Recipes. (line 58)
1483 * the meta file: Recipes. (line 270)
1484 * variables: Recipes. (line 29)
1490 Node: Introduction
\x7f1646
1491 Node: Invoking qi
\x7f2808
1492 Node: The qirc file
\x7f6228
1493 Node: Packages
\x7f7306
1494 Ref: Packages-Footnote-1
\x7f14353
1495 Node: Recipes
\x7f14466
1496 Ref: Recipes-Footnote-1
\x7f26519
1497 Node: Order files
\x7f26664
1498 Node: Creating packages
\x7f27998
1499 Node: Examining packages
\x7f29049
1500 Node: Exit status
\x7f29960
1501 Node: License
\x7f31925
1502 Node: Index
\x7f57041