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 There is an option to make use of the "extraction mode" which serves to
874 examine binary packages for debugging purposes. The extraction mode
875 consists of decompressing a package into a single directory, verifying
876 its integrity and preserving its properties.
878 qi -x mksh-R56c-x86_64+1.tlz
880 This action will put the content of "mksh-R56c-x86_64+1.tlz" into a
881 single directory, which is a private directory for the user who
882 requested the action, creation mode will be equal to *u=,g=rwx,o=rwx
883 (0700)*. The package content will reside on this location, default mask
884 to deploy the content will be equal to *u=rwx,g=rwx,o=rwx (0000)*.
886 The creation of the custom directory is influenced by the value of the
890 File: qi.info, Node: Exit status, Next: License, Prev: Examining packages, Up: Top
895 All the conditions of exit codes are described in this chapter.
898 Successful completion (no errors).
903 - Help usage on illegal options or required arguments.
905 - Program needed by qi (prerequisite) is not available.
908 Command execution error:
910 This code is used to return the evaluation of external commands and
911 shell arguments in case of error.
914 Integrity check error for compressed files.
916 Compressed files means:
918 - Tarball files from tar(1). Supported extensions: .tar,
919 .tar.gz, .tgz, .tar.Z, .tar.bz2, .tbz2, .tbz, .tar.xz, .txz
921 - Tarballs files from tarlz(1). Supported extensions: .tar.lz,
924 - Zip files from unzip(1). Supported extensions: .zip, .ZIP
926 - Gzip files from gzip(1). Supported extensions: .gz, .Z
928 - Bzip2 files from bzip2(1). Supported extensions: .bz2
930 - Lzip files from lzip(1). Supported extensions: .lz
932 - Xz files from xz(1). Supported extensions: .xz
935 File empty, not regular, or expected.
937 Commonly, it is expected:
939 - An argument for the mode of operation.
941 - A readable file or directory.
943 - A binary package (.tlz).
947 - An order file (.order).
949 - A protocol supported by the network downloader tool.
951 - A checksum file (.sha256).
954 Empty or not defined variable:
956 This code is used to report empty or undefined variables; usually,
957 variables coming from a recipe or assigned arrays that are tested.
960 Package already installed:
962 The package directory for an incoming .tlz package that already
966 Network manager error:
968 This code is used if the network downloader tool fails for some
972 File: qi.info, Node: License, Next: Index, Prev: Exit status, Up: Top
974 Appendix A GNU Free Documentation License
975 *****************************************
977 Version 1.3, 3 November 2008
979 Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
982 Everyone is permitted to copy and distribute verbatim copies
983 of this license document, but changing it is not allowed.
987 The purpose of this License is to make a manual, textbook, or other
988 functional and useful document "free" in the sense of freedom: to
989 assure everyone the effective freedom to copy and redistribute it,
990 with or without modifying it, either commercially or
991 noncommercially. Secondarily, this License preserves for the
992 author and publisher a way to get credit for their work, while not
993 being considered responsible for modifications made by others.
995 This License is a kind of "copyleft", which means that derivative
996 works of the document must themselves be free in the same sense.
997 It complements the GNU General Public License, which is a copyleft
998 license designed for free software.
1000 We have designed this License in order to use it for manuals for
1001 free software, because free software needs free documentation: a
1002 free program should come with manuals providing the same freedoms
1003 that the software does. But this License is not limited to
1004 software manuals; it can be used for any textual work, regardless
1005 of subject matter or whether it is published as a printed book. We
1006 recommend this License principally for works whose purpose is
1007 instruction or reference.
1009 1. APPLICABILITY AND DEFINITIONS
1011 This License applies to any manual or other work, in any medium,
1012 that contains a notice placed by the copyright holder saying it can
1013 be distributed under the terms of this License. Such a notice
1014 grants a world-wide, royalty-free license, unlimited in duration,
1015 to use that work under the conditions stated herein. The
1016 "Document", below, refers to any such manual or work. Any member
1017 of the public is a licensee, and is addressed as "you". You accept
1018 the license if you copy, modify or distribute the work in a way
1019 requiring permission under copyright law.
1021 A "Modified Version" of the Document means any work containing the
1022 Document or a portion of it, either copied verbatim, or with
1023 modifications and/or translated into another language.
1025 A "Secondary Section" is a named appendix or a front-matter section
1026 of the Document that deals exclusively with the relationship of the
1027 publishers or authors of the Document to the Document's overall
1028 subject (or to related matters) and contains nothing that could
1029 fall directly within that overall subject. (Thus, if the Document
1030 is in part a textbook of mathematics, a Secondary Section may not
1031 explain any mathematics.) The relationship could be a matter of
1032 historical connection with the subject or with related matters, or
1033 of legal, commercial, philosophical, ethical or political position
1036 The "Invariant Sections" are certain Secondary Sections whose
1037 titles are designated, as being those of Invariant Sections, in the
1038 notice that says that the Document is released under this License.
1039 If a section does not fit the above definition of Secondary then it
1040 is not allowed to be designated as Invariant. The Document may
1041 contain zero Invariant Sections. If the Document does not identify
1042 any Invariant Sections then there are none.
1044 The "Cover Texts" are certain short passages of text that are
1045 listed, as Front-Cover Texts or Back-Cover Texts, in the notice
1046 that says that the Document is released under this License. A
1047 Front-Cover Text may be at most 5 words, and a Back-Cover Text may
1048 be at most 25 words.
1050 A "Transparent" copy of the Document means a machine-readable copy,
1051 represented in a format whose specification is available to the
1052 general public, that is suitable for revising the document
1053 straightforwardly with generic text editors or (for images composed
1054 of pixels) generic paint programs or (for drawings) some widely
1055 available drawing editor, and that is suitable for input to text
1056 formatters or for automatic translation to a variety of formats
1057 suitable for input to text formatters. A copy made in an otherwise
1058 Transparent file format whose markup, or absence of markup, has
1059 been arranged to thwart or discourage subsequent modification by
1060 readers is not Transparent. An image format is not Transparent if
1061 used for any substantial amount of text. A copy that is not
1062 "Transparent" is called "Opaque".
1064 Examples of suitable formats for Transparent copies include plain
1065 ASCII without markup, Texinfo input format, LaTeX input format,
1066 SGML or XML using a publicly available DTD, and standard-conforming
1067 simple HTML, PostScript or PDF designed for human modification.
1068 Examples of transparent image formats include PNG, XCF and JPG.
1069 Opaque formats include proprietary formats that can be read and
1070 edited only by proprietary word processors, SGML or XML for which
1071 the DTD and/or processing tools are not generally available, and
1072 the machine-generated HTML, PostScript or PDF produced by some word
1073 processors for output purposes only.
1075 The "Title Page" means, for a printed book, the title page itself,
1076 plus such following pages as are needed to hold, legibly, the
1077 material this License requires to appear in the title page. For
1078 works in formats which do not have any title page as such, "Title
1079 Page" means the text near the most prominent appearance of the
1080 work's title, preceding the beginning of the body of the text.
1082 The "publisher" means any person or entity that distributes copies
1083 of the Document to the public.
1085 A section "Entitled XYZ" means a named subunit of the Document
1086 whose title either is precisely XYZ or contains XYZ in parentheses
1087 following text that translates XYZ in another language. (Here XYZ
1088 stands for a specific section name mentioned below, such as
1089 "Acknowledgements", "Dedications", "Endorsements", or "History".)
1090 To "Preserve the Title" of such a section when you modify the
1091 Document means that it remains a section "Entitled XYZ" according
1094 The Document may include Warranty Disclaimers next to the notice
1095 which states that this License applies to the Document. These
1096 Warranty Disclaimers are considered to be included by reference in
1097 this License, but only as regards disclaiming warranties: any other
1098 implication that these Warranty Disclaimers may have is void and
1099 has no effect on the meaning of this License.
1103 You may copy and distribute the Document in any medium, either
1104 commercially or noncommercially, provided that this License, the
1105 copyright notices, and the license notice saying this License
1106 applies to the Document are reproduced in all copies, and that you
1107 add no other conditions whatsoever to those of this License. You
1108 may not use technical measures to obstruct or control the reading
1109 or further copying of the copies you make or distribute. However,
1110 you may accept compensation in exchange for copies. If you
1111 distribute a large enough number of copies you must also follow the
1112 conditions in section 3.
1114 You may also lend copies, under the same conditions stated above,
1115 and you may publicly display copies.
1117 3. COPYING IN QUANTITY
1119 If you publish printed copies (or copies in media that commonly
1120 have printed covers) of the Document, numbering more than 100, and
1121 the Document's license notice requires Cover Texts, you must
1122 enclose the copies in covers that carry, clearly and legibly, all
1123 these Cover Texts: Front-Cover Texts on the front cover, and
1124 Back-Cover Texts on the back cover. Both covers must also clearly
1125 and legibly identify you as the publisher of these copies. The
1126 front cover must present the full title with all words of the title
1127 equally prominent and visible. You may add other material on the
1128 covers in addition. Copying with changes limited to the covers, as
1129 long as they preserve the title of the Document and satisfy these
1130 conditions, can be treated as verbatim copying in other respects.
1132 If the required texts for either cover are too voluminous to fit
1133 legibly, you should put the first ones listed (as many as fit
1134 reasonably) on the actual cover, and continue the rest onto
1137 If you publish or distribute Opaque copies of the Document
1138 numbering more than 100, you must either include a machine-readable
1139 Transparent copy along with each Opaque copy, or state in or with
1140 each Opaque copy a computer-network location from which the general
1141 network-using public has access to download using public-standard
1142 network protocols a complete Transparent copy of the Document, free
1143 of added material. If you use the latter option, you must take
1144 reasonably prudent steps, when you begin distribution of Opaque
1145 copies in quantity, to ensure that this Transparent copy will
1146 remain thus accessible at the stated location until at least one
1147 year after the last time you distribute an Opaque copy (directly or
1148 through your agents or retailers) of that edition to the public.
1150 It is requested, but not required, that you contact the authors of
1151 the Document well before redistributing any large number of copies,
1152 to give them a chance to provide you with an updated version of the
1157 You may copy and distribute a Modified Version of the Document
1158 under the conditions of sections 2 and 3 above, provided that you
1159 release the Modified Version under precisely this License, with the
1160 Modified Version filling the role of the Document, thus licensing
1161 distribution and modification of the Modified Version to whoever
1162 possesses a copy of it. In addition, you must do these things in
1163 the Modified Version:
1165 A. Use in the Title Page (and on the covers, if any) a title
1166 distinct from that of the Document, and from those of previous
1167 versions (which should, if there were any, be listed in the
1168 History section of the Document). You may use the same title
1169 as a previous version if the original publisher of that
1170 version gives permission.
1172 B. List on the Title Page, as authors, one or more persons or
1173 entities responsible for authorship of the modifications in
1174 the Modified Version, together with at least five of the
1175 principal authors of the Document (all of its principal
1176 authors, if it has fewer than five), unless they release you
1177 from this requirement.
1179 C. State on the Title page the name of the publisher of the
1180 Modified Version, as the publisher.
1182 D. Preserve all the copyright notices of the Document.
1184 E. Add an appropriate copyright notice for your modifications
1185 adjacent to the other copyright notices.
1187 F. Include, immediately after the copyright notices, a license
1188 notice giving the public permission to use the Modified
1189 Version under the terms of this License, in the form shown in
1192 G. Preserve in that license notice the full lists of Invariant
1193 Sections and required Cover Texts given in the Document's
1196 H. Include an unaltered copy of this License.
1198 I. Preserve the section Entitled "History", Preserve its Title,
1199 and add to it an item stating at least the title, year, new
1200 authors, and publisher of the Modified Version as given on the
1201 Title Page. If there is no section Entitled "History" in the
1202 Document, create one stating the title, year, authors, and
1203 publisher of the Document as given on its Title Page, then add
1204 an item describing the Modified Version as stated in the
1207 J. Preserve the network location, if any, given in the Document
1208 for public access to a Transparent copy of the Document, and
1209 likewise the network locations given in the Document for
1210 previous versions it was based on. These may be placed in the
1211 "History" section. You may omit a network location for a work
1212 that was published at least four years before the Document
1213 itself, or if the original publisher of the version it refers
1214 to gives permission.
1216 K. For any section Entitled "Acknowledgements" or "Dedications",
1217 Preserve the Title of the section, and preserve in the section
1218 all the substance and tone of each of the contributor
1219 acknowledgements and/or dedications given therein.
1221 L. Preserve all the Invariant Sections of the Document, unaltered
1222 in their text and in their titles. Section numbers or the
1223 equivalent are not considered part of the section titles.
1225 M. Delete any section Entitled "Endorsements". Such a section
1226 may not be included in the Modified Version.
1228 N. Do not retitle any existing section to be Entitled
1229 "Endorsements" or to conflict in title with any Invariant
1232 O. Preserve any Warranty Disclaimers.
1234 If the Modified Version includes new front-matter sections or
1235 appendices that qualify as Secondary Sections and contain no
1236 material copied from the Document, you may at your option designate
1237 some or all of these sections as invariant. To do this, add their
1238 titles to the list of Invariant Sections in the Modified Version's
1239 license notice. These titles must be distinct from any other
1242 You may add a section Entitled "Endorsements", provided it contains
1243 nothing but endorsements of your Modified Version by various
1244 parties--for example, statements of peer review or that the text
1245 has been approved by an organization as the authoritative
1246 definition of a standard.
1248 You may add a passage of up to five words as a Front-Cover Text,
1249 and a passage of up to 25 words as a Back-Cover Text, to the end of
1250 the list of Cover Texts in the Modified Version. Only one passage
1251 of Front-Cover Text and one of Back-Cover Text may be added by (or
1252 through arrangements made by) any one entity. If the Document
1253 already includes a cover text for the same cover, previously added
1254 by you or by arrangement made by the same entity you are acting on
1255 behalf of, you may not add another; but you may replace the old
1256 one, on explicit permission from the previous publisher that added
1259 The author(s) and publisher(s) of the Document do not by this
1260 License give permission to use their names for publicity for or to
1261 assert or imply endorsement of any Modified Version.
1263 5. COMBINING DOCUMENTS
1265 You may combine the Document with other documents released under
1266 this License, under the terms defined in section 4 above for
1267 modified versions, provided that you include in the combination all
1268 of the Invariant Sections of all of the original documents,
1269 unmodified, and list them all as Invariant Sections of your
1270 combined work in its license notice, and that you preserve all
1271 their Warranty Disclaimers.
1273 The combined work need only contain one copy of this License, and
1274 multiple identical Invariant Sections may be replaced with a single
1275 copy. If there are multiple Invariant Sections with the same name
1276 but different contents, make the title of each such section unique
1277 by adding at the end of it, in parentheses, the name of the
1278 original author or publisher of that section if known, or else a
1279 unique number. Make the same adjustment to the section titles in
1280 the list of Invariant Sections in the license notice of the
1283 In the combination, you must combine any sections Entitled
1284 "History" in the various original documents, forming one section
1285 Entitled "History"; likewise combine any sections Entitled
1286 "Acknowledgements", and any sections Entitled "Dedications". You
1287 must delete all sections Entitled "Endorsements."
1289 6. COLLECTIONS OF DOCUMENTS
1291 You may make a collection consisting of the Document and other
1292 documents released under this License, and replace the individual
1293 copies of this License in the various documents with a single copy
1294 that is included in the collection, provided that you follow the
1295 rules of this License for verbatim copying of each of the documents
1296 in all other respects.
1298 You may extract a single document from such a collection, and
1299 distribute it individually under this License, provided you insert
1300 a copy of this License into the extracted document, and follow this
1301 License in all other respects regarding verbatim copying of that
1304 7. AGGREGATION WITH INDEPENDENT WORKS
1306 A compilation of the Document or its derivatives with other
1307 separate and independent documents or works, in or on a volume of a
1308 storage or distribution medium, is called an "aggregate" if the
1309 copyright resulting from the compilation is not used to limit the
1310 legal rights of the compilation's users beyond what the individual
1311 works permit. When the Document is included in an aggregate, this
1312 License does not apply to the other works in the aggregate which
1313 are not themselves derivative works of the Document.
1315 If the Cover Text requirement of section 3 is applicable to these
1316 copies of the Document, then if the Document is less than one half
1317 of the entire aggregate, the Document's Cover Texts may be placed
1318 on covers that bracket the Document within the aggregate, or the
1319 electronic equivalent of covers if the Document is in electronic
1320 form. Otherwise they must appear on printed covers that bracket
1321 the whole aggregate.
1325 Translation is considered a kind of modification, so you may
1326 distribute translations of the Document under the terms of section
1327 4. Replacing Invariant Sections with translations requires special
1328 permission from their copyright holders, but you may include
1329 translations of some or all Invariant Sections in addition to the
1330 original versions of these Invariant Sections. You may include a
1331 translation of this License, and all the license notices in the
1332 Document, and any Warranty Disclaimers, provided that you also
1333 include the original English version of this License and the
1334 original versions of those notices and disclaimers. In case of a
1335 disagreement between the translation and the original version of
1336 this License or a notice or disclaimer, the original version will
1339 If a section in the Document is Entitled "Acknowledgements",
1340 "Dedications", or "History", the requirement (section 4) to
1341 Preserve its Title (section 1) will typically require changing the
1346 You may not copy, modify, sublicense, or distribute the Document
1347 except as expressly provided under this License. Any attempt
1348 otherwise to copy, modify, sublicense, or distribute it is void,
1349 and will automatically terminate your rights under this License.
1351 However, if you cease all violation of this License, then your
1352 license from a particular copyright holder is reinstated (a)
1353 provisionally, unless and until the copyright holder explicitly and
1354 finally terminates your license, and (b) permanently, if the
1355 copyright holder fails to notify you of the violation by some
1356 reasonable means prior to 60 days after the cessation.
1358 Moreover, your license from a particular copyright holder is
1359 reinstated permanently if the copyright holder notifies you of the
1360 violation by some reasonable means, this is the first time you have
1361 received notice of violation of this License (for any work) from
1362 that copyright holder, and you cure the violation prior to 30 days
1363 after your receipt of the notice.
1365 Termination of your rights under this section does not terminate
1366 the licenses of parties who have received copies or rights from you
1367 under this License. If your rights have been terminated and not
1368 permanently reinstated, receipt of a copy of some or all of the
1369 same material does not give you any rights to use it.
1371 10. FUTURE REVISIONS OF THIS LICENSE
1373 The Free Software Foundation may publish new, revised versions of
1374 the GNU Free Documentation License from time to time. Such new
1375 versions will be similar in spirit to the present version, but may
1376 differ in detail to address new problems or concerns. See
1377 <http://www.gnu.org/copyleft/>.
1379 Each version of the License is given a distinguishing version
1380 number. If the Document specifies that a particular numbered
1381 version of this License "or any later version" applies to it, you
1382 have the option of following the terms and conditions either of
1383 that specified version or of any later version that has been
1384 published (not as a draft) by the Free Software Foundation. If the
1385 Document does not specify a version number of this License, you may
1386 choose any version ever published (not as a draft) by the Free
1387 Software Foundation. If the Document specifies that a proxy can
1388 decide which future versions of this License can be used, that
1389 proxy's public statement of acceptance of a version permanently
1390 authorizes you to choose that version for the Document.
1394 "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
1395 World Wide Web server that publishes copyrightable works and also
1396 provides prominent facilities for anybody to edit those works. A
1397 public wiki that anybody can edit is an example of such a server.
1398 A "Massive Multiauthor Collaboration" (or "MMC") contained in the
1399 site means any set of copyrightable works thus published on the MMC
1402 "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
1403 license published by Creative Commons Corporation, a not-for-profit
1404 corporation with a principal place of business in San Francisco,
1405 California, as well as future copyleft versions of that license
1406 published by that same organization.
1408 "Incorporate" means to publish or republish a Document, in whole or
1409 in part, as part of another Document.
1411 An MMC is "eligible for relicensing" if it is licensed under this
1412 License, and if all works that were first published under this
1413 License somewhere other than this MMC, and subsequently
1414 incorporated in whole or in part into the MMC, (1) had no cover
1415 texts or invariant sections, and (2) were thus incorporated prior
1416 to November 1, 2008.
1418 The operator of an MMC Site may republish an MMC contained in the
1419 site under CC-BY-SA on the same site at any time before August 1,
1420 2009, provided the MMC is eligible for relicensing.
1422 ADDENDUM: How to use this License for your documents
1423 ====================================================
1425 To use this License in a document you have written, include a copy of
1426 the License in the document and put the following copyright and license
1427 notices just after the title page:
1429 Copyright (C) YEAR YOUR NAME.
1430 Permission is granted to copy, distribute and/or modify this document
1431 under the terms of the GNU Free Documentation License, Version 1.3
1432 or any later version published by the Free Software Foundation;
1433 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
1434 Texts. A copy of the license is included in the section entitled ``GNU
1435 Free Documentation License''.
1437 If you have Invariant Sections, Front-Cover Texts and Back-Cover
1438 Texts, replace the "with...Texts." line with this:
1440 with the Invariant Sections being LIST THEIR TITLES, with
1441 the Front-Cover Texts being LIST, and with the Back-Cover Texts
1444 If you have Invariant Sections without Cover Texts, or some other
1445 combination of the three, merge those two alternatives to suit the
1448 If your document contains nontrivial examples of program code, we
1449 recommend releasing these examples in parallel under your choice of free
1450 software license, such as the GNU General Public License, to permit
1451 their use in free software.
1454 File: qi.info, Node: Index, Prev: License, Up: Top
1462 * configuration file: The qirc file. (line 6)
1463 * environment variables: Recipes. (line 223)
1464 * exit codes: Exit status. (line 6)
1465 * handling build order: Order files. (line 6)
1466 * introduction: Introduction. (line 6)
1467 * invocation: Invoking qi. (line 6)
1468 * managing packages: Packages. (line 6)
1469 * package blacklist: Packages. (line 176)
1470 * package build: Recipes. (line 185)
1471 * package conflicts: Packages. (line 30)
1472 * package creation: Creating packages. (line 6)
1473 * package de-installation: Packages. (line 104)
1474 * package examination: Examining packages. (line 6)
1475 * package installation: Packages. (line 55)
1476 * package upgrade: Packages. (line 143)
1477 * recipes: Recipes. (line 6)
1478 * special variables: Recipes. (line 58)
1479 * the meta file: Recipes. (line 270)
1480 * variables: Recipes. (line 29)
1486 Node: Introduction
\x7f1646
1487 Node: Invoking qi
\x7f2808
1488 Node: The qirc file
\x7f6228
1489 Node: Packages
\x7f7306
1490 Ref: Packages-Footnote-1
\x7f14353
1491 Node: Recipes
\x7f14466
1492 Ref: Recipes-Footnote-1
\x7f26519
1493 Node: Order files
\x7f26664
1494 Node: Creating packages
\x7f27998
1495 Node: Examining packages
\x7f29049
1496 Node: Exit status
\x7f29921
1497 Node: License
\x7f31886
1498 Node: Index
\x7f57002