12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594 |
- <!DOCTYPE html>
- <html>
- <!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <!-- Copyright © 2020-2024 The Dragora Team.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3 or
- any later version published by the Free Software Foundation; with no
- Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -->
- <title>Dragora 3.0 Handbook</title>
- <meta name="description" content="Dragora 3.0 Handbook">
- <meta name="keywords" content="Dragora 3.0 Handbook">
- <meta name="resource-type" content="document">
- <meta name="distribution" content="global">
- <meta name="Generator" content="makeinfo">
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <link href="#Top" rel="start" title="Top">
- <link href="#Index" rel="index" title="Index">
- <link href="#About-this-handbook" rel="next" title="About this handbook">
- <style type="text/css">
- <!--
- /*
- * handbook.css
- * CSS stylesheet based on the Dragora GNU/Linux-Libre website
- * (https://www.dragora.org)
- *
- *
- * Copyright (C)
- * 2019-2021, Matias Fonzo and Michael Siegel
- * 2019 Chris F. A. Johnson
- * 2023 Matias Fonzo
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
- a.summary-letter-printindex {text-decoration: none}
- div.center {text-align:center}
- div.display {margin-left: 3.2em}
- div.example {margin-left: 3.2em}
- pre.display-preformatted {font-family: inherit}
- span:hover a.copiable-link {visibility: visible}
- td.printindex-index-entry {vertical-align: top}
- td.printindex-index-section {vertical-align: top; padding-left: 1em}
- th.entries-header-printindex {text-align:left}
- th.sections-header-printindex {text-align:left; padding-left: 1em}
- ul.mark-bullet {list-style-type: disc}
- body {
- font-family:Helvetica,"Helvetica Neue",DejaVuSans,FreeSans,"Nimbus Sans L",sans-serif;
- font-size:18px;
- background-color:#ffffff;
- color:#000000;
- }
- /** Headings **/
- h1 {
- margin:0;
- font-size:2.33rem;
- color:#4169e1;
- }
- h2 {
- margin-top:1.5rem;
- margin-bottom:1.33rem;
- font-size:1.67rem;
- color:#4682b4;
- }
- h3 {
- margin-top:1.33rem;
- margin-bottom:1.17rem;
- font-size:1.5rem;
- color:#4682b4;
- }
- h4 {
- margin-top:1.17rem;
- margin-bottom:1rem;
- font-size:1.17rem;
- color:#4682b4;
- }
- /** Paragraphs **/
- p {
- margin:1rem 0;
- text-align:justify;
- }
- /** Quote blocks **/
- blockquote {
- margin:1rem 2rem;
- }
- /** Lists **/
- dl, ol, ul {
- margin:1rem 0;
- padding-left:2rem;
- }
-
- dl dd {
- margin-left:1rem;
- }
- /* Add space between each list item. */
- li {
- margin:0.3em 0;
- }
- /* Switch vertical margins off for nested lists. */
- dl dl, ol ol, ul ul {
- margin:0;
- }
- /** Tables **/
- table {
- margin:1rem auto;
- margin-left:3rem;
- border:1px solid #999999;
- border-collapse:collapse;
- }
- table.alt_rows tbody tr:nth-child(odd) {
- background-color:#ffffcc;
- }
- th, td {
- border:1px solid #999999;
- padding:.33rem;
- text-align:justify;
- }
- th {
- background-color:#cccccc;
- }
- /** Misc **/
- hr {
- margin:.5rem auto;
- border: 1px inset;
- }
- /*** Inline elements ***/
- code {
- padding:0 .25rem;
- font-family:monospace;
- font-weight:lighter;
- background-color:#fffafa;
- }
- kbd {
- padding:0 .25rem;
- font-family:monospace;
- font-weight:normal;
- background-color:#fffafa;
- }
- /** Links **/
- a:link {
- color:#00008b;
- /* color:#002288; */
- }
- a:visited {
- color:#666666;
- }
- a:hover {
- color:#ff69b4;
- }
- a:active {
- color:#bc8f8f;
- }
- -->
- </style>
- </head>
- <body lang="en">
- <div class="top-level-extent" id="Top">
- <div class="nav-panel">
- <p>
- Next: <a href="#About-this-handbook" accesskey="n" rel="next">About this handbook</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <a class="top" id="SEC_Top"></a>
- <p>This Handbook is for Dragora
- (version 3.0, initial revision, 02 Mar 2024).
- </p>
- <br>
- <p>Copyright © 2020-2024 The Dragora Team.
- </p>
- <p>Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3 or
- any later version published by the Free Software Foundation; with no
- Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
- </p>
- <ul class="mini-toc">
- <li><a href="#About-this-handbook" accesskey="1">About this handbook</a></li>
- <li><a href="#Revision-history-_0028ChangeLog_0029" accesskey="2">Revision history (ChangeLog)</a></li>
- <li><a href="#What-is-Dragora_003f" accesskey="3">What is Dragora?</a></li>
- <li><a href="#Why-should-I-use-Dragora_003f" accesskey="4">Why should I use Dragora?</a></li>
- <li><a href="#History" accesskey="5">History</a></li>
- <li><a href="#Maintainers" accesskey="6">Maintainers</a></li>
- <li><a href="#A-quick-glance-at-Dragora" accesskey="7">A quick glance at Dragora</a></li>
- <li><a href="#Boot-options-from-live-medium" accesskey="8">Boot options from live medium</a></li>
- <li><a href="#Using-dragora_002dinstaller" accesskey="9">Using dragora-installer</a></li>
- <li><a href="#Installing-the-system-manually-_0028as-an-alternative_0029">Installing the system manually (as an alternative)</a></li>
- <li><a href="#Introduction-to-package-management-in-Dragora">Introduction to package management in Dragora</a></li>
- <li><a href="#Package-management-in-a-nutshell">Package management in a nutshell</a></li>
- <li><a href="#Using-third_002dparty-free-software">Using third-party free software</a></li>
- <li><a href="#Introduction-to-Qi">Introduction to Qi</a></li>
- <li><a href="#Invoking-qi">Invoking qi</a></li>
- <li><a href="#The-qirc-file">The qirc file</a></li>
- <li><a href="#Packages">Packages</a></li>
- <li><a href="#Recipes">Recipes</a></li>
- <li><a href="#Order-files">Order files</a></li>
- <li><a href="#Creating-packages">Creating packages</a></li>
- <li><a href="#Examining-packages">Examining packages</a></li>
- <li><a href="#Qi-exit-status">Qi exit status</a></li>
- <li><a href="#Getting-support">Getting support</a></li>
- <li><a href="#Contributing-to-Dragora">Contributing to Dragora</a></li>
- <li><a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a></li>
- <li><a href="#Index">Index</a></li>
- </ul>
- <hr>
- <div class="chapter-level-extent" id="About-this-handbook">
- <div class="nav-panel">
- <p>
- Next: <a href="#Revision-history-_0028ChangeLog_0029" accesskey="n" rel="next">Revision history (ChangeLog)</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="About-this-handbook-1"><span>1 About this handbook<a class="copiable-link" href="#About-this-handbook-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-about-this-handbook"></a>
- <p>TODO (Add intro + versioning scheme paragraph).
- </p>
- <ul class="mini-toc">
- <li><a href="#Typographic-conventions" accesskey="1">Typographic conventions</a></li>
- </ul>
- <div class="section-level-extent" id="Typographic-conventions">
- <h3 class="section"><span>1.1 Typographic conventions<a class="copiable-link" href="#Typographic-conventions"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-typographic-conventions"></a>
- <p>TODO (appendix).
- </p>
- <hr>
- </div>
- </div>
- <div class="unnumbered-level-extent" id="Revision-history-_0028ChangeLog_0029">
- <div class="nav-panel">
- <p>
- Next: <a href="#What-is-Dragora_003f" accesskey="n" rel="next">What is Dragora?</a>, Previous: <a href="#About-this-handbook" accesskey="p" rel="prev">About this handbook</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="unnumbered" id="Revision-history-_0028ChangeLog_0029-1"><span>Revision history (ChangeLog)<a class="copiable-link" href="#Revision-history-_0028ChangeLog_0029-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-revision-history-_0028changelog_0029"></a>
- <p>TODO (appendix).
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="What-is-Dragora_003f">
- <div class="nav-panel">
- <p>
- Next: <a href="#Why-should-I-use-Dragora_003f" accesskey="n" rel="next">Why should I use Dragora?</a>, Previous: <a href="#Revision-history-_0028ChangeLog_0029" accesskey="p" rel="prev">Revision history (ChangeLog)</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="What-is-Dragora_003f-1"><span>2 What is Dragora?<a class="copiable-link" href="#What-is-Dragora_003f-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-what-is-dragora_003f"></a>
- <p><strong class="strong">Dragora</strong> is an independent GNU/Linux distribution project which
- was created from scratch with the intention of providing a reliable
- operating system with maximum respect for the user by including entirely
- free software. <strong class="strong">Dragora</strong> is based on the concepts of simplicity
- and elegance, it offers a user-friendly Unix-like environment with
- emphasis on stability and security for long-term durability.
- </p>
- <p>To put it in a nutshell, <strong class="strong">Dragora</strong> is...
- </p><ul class="itemize mark-bullet">
- <li>Minimalist.
- </li><li>Free as in freedom.
- </li><li>Getting better by the day.
- </li><li>A whole lot of fun (not suitable for old vinegars).
- </li></ul>
- <p>Some of the features of Dragora are:
- </p>
- <ul class="itemize mark-bullet">
- <li>SysV init as the classic, documented initialization program (PID 1).
- </li><li>Perp to reliably start, monitor, log and control "critical" system daemons.
- </li><li>Lightweight alternatives to popular free software; i.e, musl libc, libressl,
- mksh, scron, pkgconf.
- </li><li>The Trinity Desktop Environment (TDE).
- </li><li>Window managers such as TWM, DWM.
- </li><li>Graft for managing multiple packages under a single directory hierarchy
- using symbolic links mechanisms.
- </li><li>Qi as a simple local package manager that complements Graft to create,
- install, remove and upgrade software packages.
- </li></ul>
- <ul class="mini-toc">
- <li><a href="#Free-software" accesskey="1">Free software</a></li>
- <li><a href="#GNU" accesskey="2">GNU</a></li>
- <li><a href="#Linux-and-Linux_002dlibre" accesskey="3">Linux and Linux-libre</a></li>
- </ul>
- <div class="section-level-extent" id="Free-software">
- <h3 class="section"><span>2.1 Free software<a class="copiable-link" href="#Free-software"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-free-software"></a>
- <p>TODO.
- </p>
- </div>
- <div class="section-level-extent" id="GNU">
- <h3 class="section"><span>2.2 GNU<a class="copiable-link" href="#GNU"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-gnu"></a>
- <p>TODO.
- </p>
- </div>
- <div class="section-level-extent" id="Linux-and-Linux_002dlibre">
- <h3 class="section"><span>2.3 Linux and Linux-libre<a class="copiable-link" href="#Linux-and-Linux_002dlibre"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-linux-or-linux_002dlibre"></a>
- <p>TODO.
- </p>
- <hr>
- </div>
- </div>
- <div class="chapter-level-extent" id="Why-should-I-use-Dragora_003f">
- <div class="nav-panel">
- <p>
- Next: <a href="#History" accesskey="n" rel="next">History</a>, Previous: <a href="#What-is-Dragora_003f" accesskey="p" rel="prev">What is Dragora?</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Why-should-I-use-Dragora_003f-1"><span>3 Why should I use Dragora?<a class="copiable-link" href="#Why-should-I-use-Dragora_003f-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-why-should-I-use-dragora_003f"></a>
- <p>We cannot and do not intend to decide for you, we can only cite what we
- believe to be Dragora’s main strengths:
- </p>
- <ul class="itemize mark-bullet">
- <li><strong class="strong">Independent</strong>:
- As mentioned before, Dragora is an independent project, this means that it
- is based on a voluntary basis where one or more people share the same
- direction or intentions for the sake of the project and in benefit of the
- free software community. But above all, it is
- not a purely commercial project or one that is made by a company, where they
- have commercial interests, and where many times they will do anything to
- catch you and see your face for their selfish business.
- </li><li><strong class="strong">Simple:</strong> The underlying concept of Dragora’s design philosophy is
- simplicity: KISS, "Keep It Simple, Stupid!". This principle, which derives
- from what is known as "Ockham’s razor," was developed by the first modern
- critical philosopher: William of Ockham. We believe this concept represents
- the traditional UNIX philosophy - so we don’t add functionality
- unnecessarily, nor do we duplicate information.
- </li><li><strong class="strong">Ethical:</strong> We try to ensure that the included software is
- completely free and allows you to legally run, copy, distribute, study,
- change and improve the software.
- </li><li><strong class="strong">Language:</strong> Native support.
- </li><li><strong class="strong">Community:</strong> Dragora is not a closed project. On the contrary, anyone
- person with good intentions is welcome - and encouraged! - to join and help.
- </li></ul>
- <hr>
- </div>
- <div class="chapter-level-extent" id="History">
- <div class="nav-panel">
- <p>
- Next: <a href="#Maintainers" accesskey="n" rel="next">Maintainers</a>, Previous: <a href="#Why-should-I-use-Dragora_003f" accesskey="p" rel="prev">Why should I use Dragora?</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="History-1"><span>4 History<a class="copiable-link" href="#History-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-history"></a>
- <p>Development of Dragora started in 2007 by Matias Andres Fonzo from
- Santiago del Estero, Argentina. After one year of hard work, the first
- beta of Dragora was released on June 13, 2008, which contained the basic
- GNU toolset, boot scripts, package system, and an installer.
- Whereas the intention was to achieve a 100% "free" as in freedom
- GNU/Linux distribution from the beginning, this very first version was not
- fully free (or libre) since all parts were free software, except for the
- Linux Kernel due to blobs or non-free parts. Fortunately, the Linux-Libre
- project appears that same year, which removes or cleans the non-free parts
- of the official versions of the Linux Kernel. This led to the second beta
- of Dragora on September 18, 2008; completing distribution’s freedom by
- replacing the Kernel, and becoming the first one available to the public.
- Ongoing work to provide a more complete distribution would result in the
- stable release of Dragora 1.0, achieved on March 13, 2009. The series
- ends with the massive update plus fixes and added software for version
- 1.1 released on October 8, 2009.
- </p>
- <p>Design of this series was based on a traditional GNU/Linux scheme with
- SysVinit as the init system but using BSD-style boot scripts. The package
- system, the installer, the text menu-mode tools and the boot scripts were
- all written using the syntax and the features offered by GNU Bash.
- Initially the binary packages were provided in .tbz2 format (files
- compressed with bzip2 and packaged using GNU Tar) which later migrated to
- the .tlz format (files compressed with lzip for a higher compression plus
- very safe integrity checking). Dragora’s installer offered the option of
- several languages (translations produced by the community) to choose
- between English, Galician, Italian, and Spanish. A second CD included the
- packages for the K Desktop Environment (KDE) 3 series.
- </p>
- <ul class="mini-toc">
- <li><a href="#Releases" accesskey="1">Releases</a></li>
- </ul>
- <div class="section-level-extent" id="Releases">
- <h3 class="section"><span>4.1 Releases<a class="copiable-link" href="#Releases"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-releases"></a>
- <p>Below are the dates and code names used for all the Dragora releases:
- </p>
- <ul class="itemize mark-bullet">
- <li><em class="emph"><strong class="strong">Dragora 1.0 Beta 1:</strong> June 13th, 2008 - "hell".</em>
- </li><li><em class="emph"><strong class="strong">Dragora 1.0 Beta 2:</strong> September 18th, 2008.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 1.0 Release Candidate 1:</strong> February 12th, 2009.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 1.0 Stable:</strong> March 13th, 2009 - "starlight".</em>
- </li><li><em class="emph"><strong class="strong">Dragora 1.1 Release Candidate 1:</strong> August 25th, 2009.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 1.1 Stable:</strong> October 8th, 2009 - "stargazer".</em>
- </li><li><em class="emph"><strong class="strong">Dragora 2.0 Release Candidate 1:</strong> January 24th, 2010.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 2.0 Release Candidate 2:</strong> March 28th, 2010.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 2.0 Stable:</strong> April 13th, 2010 - "ardi".</em>
- </li><li><em class="emph"><strong class="strong">Dragora 2.1 Release Candidate 1:</strong> December 4th, 2010.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 2.1 Stable:</strong> December 31st, 2010 - "dio".</em>
- </li><li><em class="emph"><strong class="strong">Dragora 2.2 Release Candidate 1:</strong> March 2nd, 2012.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 2.2 Stable:</strong> April 21st, 2012 - "rafaela".</em>
- </li><li><em class="emph"><strong class="strong">Dragora 3.0 Alpha 1:</strong> December 31st, 2017.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 3.0 Alpha 2:</strong> September 28th, 2018.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 3.0 Beta 1:</strong> October 16th, 2019.</em>
- </li><li><em class="emph"><strong class="strong">Dragora 3.0 Beta 2:</strong> April 26th, 2023.</em>
- </li></ul>
- <hr>
- </div>
- </div>
- <div class="chapter-level-extent" id="Maintainers">
- <div class="nav-panel">
- <p>
- Next: <a href="#A-quick-glance-at-Dragora" accesskey="n" rel="next">A quick glance at Dragora</a>, Previous: <a href="#History" accesskey="p" rel="prev">History</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Maintainers-1"><span>5 Maintainers<a class="copiable-link" href="#Maintainers-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-maintainers"></a>
- <p>TODO.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="A-quick-glance-at-Dragora">
- <div class="nav-panel">
- <p>
- Next: <a href="#Boot-options-from-live-medium" accesskey="n" rel="next">Boot options from live medium</a>, Previous: <a href="#Maintainers" accesskey="p" rel="prev">Maintainers</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="A-quick-glance-at-Dragora-1"><span>6 A quick glance at Dragora<a class="copiable-link" href="#A-quick-glance-at-Dragora-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-a-quick-glance-at-dragora"></a>
- <p>TODO.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Boot-options-from-live-medium">
- <div class="nav-panel">
- <p>
- Next: <a href="#Using-dragora_002dinstaller" accesskey="n" rel="next">Using dragora-installer</a>, Previous: <a href="#A-quick-glance-at-Dragora" accesskey="p" rel="prev">A quick glance at Dragora</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Boot-options-from-live-medium-1"><span>7 Boot options from live medium<a class="copiable-link" href="#Boot-options-from-live-medium-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-boot-options-from-live-medium"></a>
- <p>TODO.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Using-dragora_002dinstaller">
- <div class="nav-panel">
- <p>
- Next: <a href="#Installing-the-system-manually-_0028as-an-alternative_0029" accesskey="n" rel="next">Installing the system manually (as an alternative)</a>, Previous: <a href="#Boot-options-from-live-medium" accesskey="p" rel="prev">Boot options from live medium</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Using-dragora_002dinstaller-1"><span>8 Using dragora-installer<a class="copiable-link" href="#Using-dragora_002dinstaller-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-using-dragora_002dinstaller"></a>
- <p>TODO.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Installing-the-system-manually-_0028as-an-alternative_0029">
- <div class="nav-panel">
- <p>
- Next: <a href="#Introduction-to-package-management-in-Dragora" accesskey="n" rel="next">Introduction to package management in Dragora</a>, Previous: <a href="#Using-dragora_002dinstaller" accesskey="p" rel="prev">Using dragora-installer</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Installing-the-system-manually-_0028as-an-alternative_0029-1"><span>9 Installing the system manually (as an alternative)<a class="copiable-link" href="#Installing-the-system-manually-_0028as-an-alternative_0029-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-installing-the-system-manually-_0028as-an-alternative_0029"></a>
- <p>TODO.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Introduction-to-package-management-in-Dragora">
- <div class="nav-panel">
- <p>
- Next: <a href="#Package-management-in-a-nutshell" accesskey="n" rel="next">Package management in a nutshell</a>, Previous: <a href="#Installing-the-system-manually-_0028as-an-alternative_0029" accesskey="p" rel="prev">Installing the system manually (as an alternative)</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Introduction-to-package-management-in-Dragora-1"><span>10 Introduction to package management in Dragora<a class="copiable-link" href="#Introduction-to-package-management-in-Dragora-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-package-management-in-dragora"></a>
- <p>TODO.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Package-management-in-a-nutshell">
- <div class="nav-panel">
- <p>
- Next: <a href="#Using-third_002dparty-free-software" accesskey="n" rel="next">Using third-party free software</a>, Previous: <a href="#Introduction-to-package-management-in-Dragora" accesskey="p" rel="prev">Introduction to package management in Dragora</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Package-management-in-a-nutshell-1"><span>11 Package management in a nutshell<a class="copiable-link" href="#Package-management-in-a-nutshell-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-package-management-in-a-nutshell"></a>
- <p>TODO.
- </p>
- <hr>
- </div>
- <div class="unnumbered-level-extent" id="Using-third_002dparty-free-software">
- <div class="nav-panel">
- <p>
- Next: <a href="#Introduction-to-Qi" accesskey="n" rel="next">Introduction to Qi</a>, Previous: <a href="#Package-management-in-a-nutshell" accesskey="p" rel="prev">Package management in a nutshell</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="unnumbered" id="Using-third_002dparty-free-software-1"><span>Using third-party free software<a class="copiable-link" href="#Using-third_002dparty-free-software-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-using-third_002dparty-free-software"></a>
- <p>TODO (appendix).
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Introduction-to-Qi">
- <div class="nav-panel">
- <p>
- Next: <a href="#Invoking-qi" accesskey="n" rel="next">Invoking qi</a>, Previous: <a href="#Using-third_002dparty-free-software" accesskey="p" rel="prev">Using third-party free software</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Introduction-to-Qi-1"><span>12 Introduction to Qi<a class="copiable-link" href="#Introduction-to-Qi-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-introduction-to-qi"></a>
- <p>Qi is a simple but well-integrated package manager. It can create,
- install, remove, and upgrade software packages. Qi produces binary
- packages using recipes, which are files containing specific instructions
- to build each package from source. Qi can manage multiple packages
- under a single directory hierarchy. This method allows to maintain a set
- of packages and multiple versions of them. This means that Qi could be
- used as the main package manager or complement the existing one.
- </p>
- <p>Qi offers a friendly command line interface, a global configuration
- file, a simple recipe layout to deploy software packages; also works
- with binary packages in parallel, speeding up installations and packages
- in production. The format used for packages is a simplified and safer
- variant of POSIX pax archive compressed in lzip format.
- </p>
- <p>Qi is a modern (POSIX-compliant) shell script released under the
- terms of the GNU General Public License. There are only two major
- dependencies for the magic: graft(1) and tarlz(1), the rest is expected
- to be found in any Unix-like system.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Invoking-qi">
- <div class="nav-panel">
- <p>
- Next: <a href="#The-qirc-file" accesskey="n" rel="next">The qirc file</a>, Previous: <a href="#Introduction-to-Qi" accesskey="p" rel="prev">Introduction to Qi</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Invoking-qi-1"><span>13 Invoking qi<a class="copiable-link" href="#Invoking-qi-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-invocation"></a>
- <p>This chapter describes the synopsis for invoking Qi.
- </p>
- <div class="example">
- <pre class="example-preformatted">Usage: qi COMMAND [<var class="var">OPTION</var>...] [<var class="var">FILE</var>]...
- </pre></div>
- <p>One mandatory command specifies the operation that ‘<samp class="samp">qi</samp>’ should
- perform, options are meant to detail how this operation should be
- performed during or after the process.
- </p>
- <p>Qi supports the following commands:
- </p>
- <dl class="table">
- <dt><code class="code">warn</code></dt>
- <dd><p>Warn about files that will be installed.
- </p>
- </dd>
- <dt><code class="code">install</code></dt>
- <dd><p>Install packages.
- </p>
- </dd>
- <dt><code class="code">remove</code></dt>
- <dd><p>Remove packages.
- </p>
- </dd>
- <dt><code class="code">upgrade</code></dt>
- <dd><p>Upgrade packages.
- </p>
- </dd>
- <dt><code class="code">extract</code></dt>
- <dd><p>Extract packages for debugging purposes.
- </p>
- </dd>
- <dt><code class="code">create</code></dt>
- <dd><p>Create a .tlz package from directory.
- </p>
- </dd>
- <dt><code class="code">build</code></dt>
- <dd><p>Build packages using recipe names.
- </p>
- </dd>
- <dt><code class="code">order</code></dt>
- <dd><p>Resolve build order through .order files
- </p></dd>
- </dl>
- <p>Options when installing, removing, or upgrading software packages:
- </p>
- <dl class="table">
- <dt><code class="code">-f</code></dt>
- <dt><code class="code">--force</code></dt>
- <dd><p>Force upgrade of pre-existing packages.
- </p>
- </dd>
- <dt><code class="code">-k</code></dt>
- <dt><code class="code">--keep</code></dt>
- <dd><p>Keep directories when build/remove/upgrade.
- </p>
- <p>Keep (don’t delete) the package directory when using remove/upgrade command.
- </p>
- <p>This will also try to preserve the directories ‘<samp class="samp">${srcdir}</samp>’ and
- ‘<samp class="samp">${destdir}</samp>’ when using build command. Its effect is available in
- recipes as ‘<samp class="samp">${keep_srcdir}</samp>’ and ‘<samp class="samp">${keep_destdir}</samp>’. See
- <a class="ref" href="#Recipes">Special variables</a> for details.
- </p>
- </dd>
- <dt><code class="code">-p</code></dt>
- <dt><code class="code">--prune</code></dt>
- <dd><p>Prune conflicts.
- </p>
- </dd>
- <dt><code class="code">-P</code></dt>
- <dt><code class="code">--packagedir=<dir></code></dt>
- <dd><p>Set directory for package installations.
- </p>
- </dd>
- <dt><code class="code">-t</code></dt>
- <dt><code class="code">--targetdir=<dir></code></dt>
- <dd><p>Set target directory for symbolic links.
- </p>
- </dd>
- <dt><code class="code">-r</code></dt>
- <dt><code class="code">--rootdir=<dir></code></dt>
- <dd><p>Use the fully qualified named directory as the root directory for all qi
- operations.
- </p>
- <p>Note: the target directory and the package directory will be
- relative to the specified directory, excepting the graft log file.
- </p></dd>
- </dl>
- <p>Options when building software packages using recipes:
- </p>
- <dl class="table">
- <dt><code class="code">-a</code></dt>
- <dt><code class="code">--architecture</code></dt>
- <dd><p>Set architecture name for the package.
- </p>
- </dd>
- <dt><code class="code">-j</code></dt>
- <dt><code class="code">--jobs</code></dt>
- <dd><p>Parallel jobs for the compiler.
- </p>
- <p>This option sets the variable ‘<samp class="samp">${jobs}</samp>’. If not specified, default
- sets to 1.
- </p>
- </dd>
- <dt><code class="code">-S</code></dt>
- <dt><code class="code">--skip-questions</code></dt>
- <dd><p>Skip questions on completed recipes.
- </p>
- </dd>
- <dt><code class="code">-1</code></dt>
- <dt><code class="code">--increment</code></dt>
- <dd><p>Increment release number (‘<samp class="samp">${release}</samp>’ + 1).
- </p>
- <p>The effect of this option will be omitted if –no-package is being used.
- </p>
- </dd>
- <dt><code class="code">-n</code></dt>
- <dt><code class="code">--no-package</code></dt>
- <dd><p>Do not create a .tlz package.
- </p>
- </dd>
- <dt><code class="code">-i</code></dt>
- <dt><code class="code">--install</code></dt>
- <dd><p>Install package after the build.
- </p>
- </dd>
- <dt><code class="code">-u</code></dt>
- <dt><code class="code">--upgrade</code></dt>
- <dd><p>Upgrade package after the build.
- </p>
- </dd>
- <dt><code class="code">-o</code></dt>
- <dt><code class="code">--outdir=<dir></code></dt>
- <dd><p>Where the packages produced will be written.
- </p>
- <p>This option sets the variable ‘<samp class="samp">${outdir}</samp>’.
- </p>
- </dd>
- <dt><code class="code">-w</code></dt>
- <dt><code class="code">--worktree=<dir></code></dt>
- <dd><p>Where archives, patches, recipes are expected.
- </p>
- <p>This option sets the variable ‘<samp class="samp">${worktree}</samp>’.
- </p>
- </dd>
- <dt><code class="code">-s</code></dt>
- <dt><code class="code">--sourcedir=<dir></code></dt>
- <dd><p>Where compressed sources will be found.
- </p>
- <p>This option sets the variable ‘<samp class="samp">${tardir}</samp>’.
- </p></dd>
- </dl>
- <p>Other options:
- </p>
- <dl class="table">
- <dt><code class="code">-v</code></dt>
- <dt><code class="code">--verbose</code></dt>
- <dd><p>Be verbose (an extra -v gives more).
- </p>
- <p>It sets the verbosity level, default sets to 0.
- </p>
- <p>The value 1 is used for more verbosity while the value 2 is too detailed.
- Although at the moment it is limited to graft(1) verbosity.
- </p>
- </dd>
- <dt><code class="code">-N</code></dt>
- <dt><code class="code">--no-rc</code></dt>
- <dd><p>Do not read the configuration file.
- </p>
- <p>This will ignore reading the qirc file.
- </p>
- </dd>
- <dt><code class="code">-L</code></dt>
- <dt><code class="code">--show-location</code></dt>
- <dd><p>Print default directory locations and exit.
- </p>
- <p>This will print the target directory, package directory, working tree,
- the directory for sources, and the output directory for the packages
- produced. The output will appear on STDOUT as follows:
- </p>
- <div class="example">
- <pre class="example-preformatted">QI_TARGETDIR=/usr/local
- QI_PACKAGEDIR=/usr/local/pkgs
- QI_WORKTREE=/usr/src/qi
- QI_TARDIR=/usr/src/qi/sources
- QI_OUTDIR=/var/cache/qi/packages
- </pre></div>
- <p>You can set these environment variables using one of the following methods:
- </p>
- <p><code class="code">eval "$(qi -L)"</code>
- </p>
- <p>This will display the default locations taking into account the values set
- from the qirc configuration file. You can deny the influence of the
- configuration file by setting the option ‘<samp class="samp">-N</samp>’.
- </p>
- <p><code class="code">eval "$(qi -N -L)"</code>
- </p>
- <p>Or you can adjust the new locations using the command-line options, e.g:
- </p>
- <p><code class="code">eval "$(qi -N --targetdir=/directory -L)"</code>
- </p>
- </dd>
- <dt><code class="code">-h</code></dt>
- <dt><code class="code">--help</code></dt>
- <dd><p>Display the usage and exit.
- </p>
- </dd>
- <dt><code class="code">-V</code></dt>
- <dt><code class="code">--version</code></dt>
- <dd>
- <p>This will print the (short) version information and then exit.
- </p>
- <p>The same can be achieved if Qi is invoked as ‘<samp class="samp">qi version</samp>’.
- </p></dd>
- </dl>
- <p>When FILE is -, qi can read from the standard input. See examples from
- the <a class="ref" href="#Packages">Packages</a> section.
- </p>
- <p>Exit status: 0 for a normal exit, 1 for minor common errors (help usage,
- support not available, etc), 2 to indicate a command execution error;
- 3 for integrity check error on compressed files, 4 for empty, not
- regular, or expected files, 5 for empty or not defined variables,
- 6 when a package already exist, 10 for network manager errors.
- For more details, see the <a class="ref" href="#Qi-exit-status">Qi exit status</a> section.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="The-qirc-file">
- <div class="nav-panel">
- <p>
- Next: <a href="#Packages" accesskey="n" rel="next">Packages</a>, Previous: <a href="#Invoking-qi" accesskey="p" rel="prev">Invoking qi</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="The-qirc-file-1"><span>14 The qirc file<a class="copiable-link" href="#The-qirc-file-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-configuration-file"></a>
- <p>The global <samp class="file">qirc</samp> file offers a way to define variables and tools
- (such as a download manager) for default use. This file is used by qi
- at runtime, e.g., to build, install, remove or upgrade packages.
- </p>
- <p>Variables and their possible values must be declared as any other
- variable in the shell.
- </p>
- <p>The command line options related to the package directory and target
- directory and some of the command line options used for the build command,
- have the power to override the values declared on <samp class="file">qirc</samp>.
- See <a class="ref" href="#Invoking-qi">Invoking qi</a>.
- </p>
- <p>The order in which qi looks for this file is:
- </p>
- <ol class="enumerate">
- <li> <code class="env">${HOME}/.qirc</code>
- Effective user.
- </li><li> ‘<samp class="samp">${sysconfdir}/qirc</samp>’
- System-wide.
- </li></ol>
- <p>If you intend to run qi as effective user, the file
- ‘<samp class="samp">${sysconfdir}/qirc</samp>’ could be copied to <code class="env">${HOME}/.qirc</code>
- setting the paths for ‘<samp class="samp">${packagedir}</samp>’ and ‘<samp class="samp">${targetdir}</samp>’
- according to the <code class="env">$HOME</code>.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Packages">
- <div class="nav-panel">
- <p>
- Next: <a href="#Recipes" accesskey="n" rel="next">Recipes</a>, Previous: <a href="#The-qirc-file" accesskey="p" rel="prev">The qirc file</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Packages-1"><span>15 Packages<a class="copiable-link" href="#Packages-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-managing-packages"></a>
- <p>A package is a suite of programs usually distributed in binary form
- which may also contain manual pages, documentation, or any other file
- associated to a specific software.
- </p>
- <p>The package format used by qi is a simplified POSIX pax archive
- compressed using lzip<a class="footnote" id="DOCF1" href="#FOOT1"><sup>1</sup></a>. The
- file extension for packages ends in ‘<samp class="samp">.tlz</samp>’.
- </p>
- <p>Both package installation and package de-installation are managed using
- two important (internal) variables: ‘<samp class="samp">${packagedir}</samp>’ and
- ‘<samp class="samp">${targetdir}</samp>’, these values can be changed in the
- configuration file or via options.
- </p>
- <p>‘<samp class="samp">${packagedir}</samp>’ is a common directory tree where the package
- contents will be decompressed (will reside).
- </p>
- <p>‘<samp class="samp">${targetdir}</samp>’ is a target directory where the links will be
- made by graft(1) taking ‘<samp class="samp">${packagedir}/package_name</samp>’ into account.
- </p>
- <p>Packages are installed in self-contained directory trees and symbolic
- links from a common area are made to the package files. This allows
- multiple versions of the same package to coexist on the same system.
- </p>
- <ul class="mini-toc">
- <li><a href="#Package-conflicts" accesskey="1">Package conflicts</a></li>
- <li><a href="#Installing-packages" accesskey="2">Installing packages</a></li>
- <li><a href="#Removing-packages" accesskey="3">Removing packages</a></li>
- <li><a href="#Upgrading-packages" accesskey="4">Upgrading packages</a></li>
- </ul>
- <div class="section-level-extent" id="Package-conflicts">
- <h3 class="section"><span>15.1 Package conflicts<a class="copiable-link" href="#Package-conflicts"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-package-conflicts"></a>
- <p>All the links to install or remove a package are handled by graft(1).
- Since multiple packages can be installed or removed at the same time,
- certain conflicts may arise between the packages.
- </p>
- <p>graft<a class="footnote" id="DOCF2" href="#FOOT2"><sup>2</sup></a>
- defines a CONFLICT as one of the following conditions:
- </p>
- <ul class="itemize mark-bullet">
- <li>If the package object is a directory and the target object exists but is
- not a directory.
- </li><li>If the package object is not a directory and the target object exists
- and is not a symbolic link.
- </li><li>If the package object is not a directory and the target object exists
- and is a symbolic link to something other than the package object.
- </li></ul>
- <p>The default behavior of qi for an incoming package is to ABORT if a
- conflict arises. When a package is going to be deleted, qi tells to
- graft(1) to remove those parts that are not in conflict, leaving the
- links to the belonging package. This behavior can be forced if the
- –prune option is given.
- </p>
- </div>
- <div class="section-level-extent" id="Installing-packages">
- <h3 class="section"><span>15.2 Installing packages<a class="copiable-link" href="#Installing-packages"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-package-installation"></a>
- <p>To install a single package, simply type:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi install coreutils_8.30_i586-1@tools.tlz
- </pre></div>
- <p>To install multiple packages at once, type:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi install gcc_8.3.0_i586-1@devel.tlz rafaela_2.2_i586-1@legacy.tlz ...
- </pre></div>
- <p>Warn about the files that will be linked:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi warn bash_5.0_i586-1@shells.tlz
- </pre></div>
- <p>This is to verify the content of a package before installing it.
- </p>
- <p>See the process of an installation:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi install --verbose mariana_3.0_i586-1@woman.tlz
- </pre></div>
- <p>A second –verbose or -v option gives more (very verbose).
- </p>
- <p>Installing package in a different location:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi install --rootdir=/media/floppy lzip_1.21_i586-1@compressors.tlz
- </pre></div>
- <p>Important: the –rootdir option assumes ‘<samp class="samp">${targetdir}</samp>’ and
- ‘<samp class="samp">${packagedir}</samp>’. See the following example:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi install --rootdir=/home/selk lzip_1.21_i586-1@compressors.tlz
- </pre></div>
- <p>The content of "lzip_1.21_i586-1@compressors.tlz" will be decompressed
- into ‘<samp class="samp">/home/selk/pkgs/lzip_1.21_i586-1@compressors</samp>’.
- Assuming that the main binary for lzip is under
- ‘<samp class="samp">/home/selk/pkgs/lzip_1.21_i586-1@compressors/usr/bin/</samp>’
- the target for "usr/bin" will be created at ‘<samp class="samp">/home/selk</samp>’. Considering
- that you have exported the <code class="env">PATH</code> as ‘<samp class="samp">${HOME}/usr/bin</samp>’, now the
- system is able to see the recent lzip command.
- </p>
- <p>Installing from a list of packages using standard input:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi install - < PACKAGELIST.txt
- </pre></div>
- <p>Or in combination with another tool:
- </p><div class="example">
- <pre class="example-preformatted">sort -u PACKAGELIST.txt | qi install -
- </pre></div>
- <p>The sort command will read and sorts the list of declared packages,
- while trying to have unique entries for each statement. The output
- produced is captured by Qi to install each package.
- </p>
- <p>An example of a list containing package names is:
- </p><div class="example">
- <pre class="example-preformatted">/var/cache/qi/packages/amd64/tcl_8.6.9_amd64-1@devel.tlz
- /var/cache/qi/packages/amd64/tk_8.6.9.1_amd64-1@devel.tlz
- /var/cache/qi/packages/amd64/vala_0.42.3_amd64-1@devel.tlz
- </pre></div>
- </div>
- <div class="section-level-extent" id="Removing-packages">
- <h3 class="section"><span>15.3 Removing packages<a class="copiable-link" href="#Removing-packages"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-package-de_002dinstallation"></a>
- <p>To remove a package, simply type:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi remove xz_5.2.4_i586-1@compressors.tlz
- </pre></div>
- <p>Remove command will match the package name using ‘<samp class="samp">${packagedir}</samp>’ as
- prefix. For example, if the value of ‘<samp class="samp">${packagedir}</samp>’ has been
- set to /usr/pkg, this will be equal to:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi remove /usr/pkg/xz_5.2.4_i586-1@compressors
- </pre></div>
- <p>Detailed output:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi remove --verbose /usr/pkg/xz_5.2.4_i586-1@compressors
- </pre></div>
- <p>A second –verbose or -v option gives more (very verbose).
- </p>
- <p>By default the remove command does not preserve a package directory after
- removing its links from ‘<samp class="samp">${targetdir}</samp>’, but this behavior can be
- changed if the –keep option is passed:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi remove --keep /usr/pkg/lzip_1.21_i586-1@compressors
- </pre></div>
- <p>This means that the links to the package can be reactivated, later:
- </p>
- <div class="example">
- <pre class="example-preformatted">cd /usr/pkg && graft -i lzip_1.21_i586-1@compressors
- </pre></div>
- <p>Removing package from a different location:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi remove --rootdir=/home/cthulhu xz_5.2.4_i586-1@compressors
- </pre></div>
- <p>Removing a package using standard input:
- </p>
- <div class="example">
- <pre class="example-preformatted">echo vala_0.42.3_amd64-1@devel | qi remove -
- </pre></div>
- <p>This will match with the package directory.
- </p>
- </div>
- <div class="section-level-extent" id="Upgrading-packages">
- <h3 class="section"><span>15.4 Upgrading packages<a class="copiable-link" href="#Upgrading-packages"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-package-upgrade"></a>
- <p>The upgrade command inherits the properties of the installation and removal
- process. To make sure that a package is updated, the package is installed
- in a temporary directory taking ‘<samp class="samp">${packagedir}</samp>’ into account. Once
- the incoming package is pre-installed, qi can proceed to search and delete
- packages that have the same name (considered as previous ones). Finally,
- the package is re-installed at its final location and the temporary
- directory is removed.
- </p>
- <p>Since updating a package can be crucial and so to perform a successful
- upgrade, from start to finish, you will want to ignore some important
- system signals during the upgrade process, those signals are SIGHUP,
- SIGINT, SIGQUIT, SIGABRT, and SIGTERM.
- </p>
- <p>To upgrade a package, just type:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi upgrade gcc_9.0.1_i586-1@devel.tlz
- </pre></div>
- <p>This will proceed to upgrade "gcc_9.0.1_i586-1@devel" removing any other
- version of "gcc" (if any).
- </p>
- <p>If you want to keep the package directories of versions found during the
- upgrade process, just pass:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi upgrade --keep gcc_9.0.1_i586-1@devel.tlz
- </pre></div>
- <p>To see the upgrade process:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi upgrade --verbose gcc_9.0.1_i586-1@devel.tlz
- </pre></div>
- <p>A second –verbose or -v option gives more (very verbose).
- </p>
- <p>To force the upgrade of an existing package:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi upgrade --force gcc_9.0.1_i586-1@devel.tlz
- </pre></div>
- <ul class="mini-toc">
- <li><a href="#Package-blacklist" accesskey="1">Package blacklist</a></li>
- </ul>
- <div class="subsection-level-extent" id="Package-blacklist">
- <h4 class="subsection"><span>15.4.1 Package blacklist<a class="copiable-link" href="#Package-blacklist"> ¶</a></span></h4>
- <a class="index-entry-id" id="index-package-blacklist"></a>
- <p>To implement general package facilities, either to install, remove or
- maintain the hierarchy of packages in a clean manner, qi makes use of the
- pruning operation via graft(1) by default:
- </p>
- <p>There is a risk if those are crucial packages for the proper functioning
- of the system, because it implies the deactivation of symbolic from the
- target directory, <em class="emph">especially</em> when transitioning an incoming package
- into its final location during an upgrade.
- </p>
- <p>A blacklist of package names has been devised for the case where
- a user decides to upgrade all the packages in the system, or
- just the crucial ones, such as the C library.
- </p>
- <p>The blacklist is related to the upgrade command only, consists in installing
- a package instead of updating it or removing previous versions of it;
- the content of the package will be updated over the existing content at
- ‘<samp class="samp">${packagedir}</samp>’, while the existing links from
- ‘<samp class="samp">${targetdir}</samp>’ will be preserved. A pruning of links will be
- carried out in order to re-link possible differences with the recent
- content, this helps to avoid leaving dead links in the target directory.
- </p>
- <p>Package names for the blacklist to be declared must be set from the
- configuration file. By default, it is declared using the package name,
- which is more than enough for critical system packages, but if you want to
- be more specific, you can declare a package using:
- ‘<samp class="samp">${pkgname}_${pkgversion}_${arch}-${release}</samp>’ where
- the package category is avoided for common matching. See
- <a class="ref" href="#Recipes">Special variables</a> for a description of these variables.
- </p>
- <hr>
- </div>
- </div>
- </div>
- <div class="chapter-level-extent" id="Recipes">
- <div class="nav-panel">
- <p>
- Next: <a href="#Order-files" accesskey="n" rel="next">Order files</a>, Previous: <a href="#Packages" accesskey="p" rel="prev">Packages</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Recipes-1"><span>16 Recipes<a class="copiable-link" href="#Recipes-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-recipes"></a>
- <p>A recipe is a file telling qi what to do. Most often, the recipe tells
- qi how to build a binary package from a source tarball.
- </p>
- <p>A recipe has two parts: a list of variable definitions and a list of
- sections. By convention, the syntax of a section is:
- </p>
- <div class="example">
- <pre class="example-preformatted">section_name()
- {
- section lines
- }
- </pre></div>
- <p>The section name is followed by parentheses, one newline and an opening
- brace. The line finishing the section contains just a closing brace.
- The section names or the function names currently recognized are
- ‘<samp class="samp">build</samp>’.
- </p>
- <p>The ‘<samp class="samp">build</samp>’ section (or <strong class="strong">shell function</strong>) is an augmented
- shell script that contains the main instructions to build software
- from source.
- </p>
- <p>If there are other functions defined by the packager, Qi detects them
- for later execution.
- </p>
- <ul class="mini-toc">
- <li><a href="#Variables" accesskey="1">Variables</a></li>
- <li><a href="#Special-variables" accesskey="2">Special variables</a></li>
- <li><a href="#Writing-recipes" accesskey="3">Writing recipes</a></li>
- <li><a href="#Building-packages" accesskey="4">Building packages</a></li>
- <li><a href="#Variables-from-the-environment" accesskey="5">Variables from the environment</a></li>
- <li><a href="#The-meta-file" accesskey="6">The meta file</a></li>
- </ul>
- <div class="section-level-extent" id="Variables">
- <h3 class="section"><span>16.1 Variables<a class="copiable-link" href="#Variables"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-variables"></a>
- <p>A "variable" is a <strong class="strong">shell variable</strong> defined either in <samp class="file">qirc</samp>
- or in a recipe to represent a string of text, called the variable’s
- "value". These values are substituted by explicit request in the
- definitions of other variables or in calls to external commands.
- </p>
- <p>Variables can represent lists of file names, options to pass to
- compilers, programs to run, directories to look in for source files,
- directories to write output to, or anything else you can imagine.
- </p>
- <p>Definitions of variables in qi have four levels of precedence.
- Options which define variables from the command-line override those
- specified in the <samp class="file">qirc</samp> file, while variables defined in the recipe
- override those specified in <samp class="file">qirc</samp>, taking priority over those
- variables set by command-line options. Finally, the variables have
- default values if they are not defined anywhere.
- </p>
- <p>Options that set variables through the command-line can only reference
- variables defined in <samp class="file">qirc</samp> and variables with default values.
- </p>
- <p>Definitions of variables in <samp class="file">qirc</samp> can only reference variables
- previously defined in <samp class="file">qirc</samp> and variables with default values.
- </p>
- <p>Definitions of variables in the recipe can only reference variables
- set by the command-line, variables previously defined in the recipe,
- variables defined in <samp class="file">qirc</samp>, and variables with default values.
- </p>
- </div>
- <div class="section-level-extent" id="Special-variables">
- <h3 class="section"><span>16.2 Special variables<a class="copiable-link" href="#Special-variables"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-special-variables"></a>
- <p>There are variables which can only be set using the command line options or
- via <samp class="file">qirc</samp>, there are other special variables which can be defined or
- redefined in a recipe. See the following definitions:
- </p>
- <p>‘<samp class="samp">outdir</samp>’ is the directory where the packages produced are written.
- This variable can be redefined per-recipe. Default sets to
- ‘<samp class="samp">/var/cache/qi/packages</samp>’.
- </p>
- <p>‘<samp class="samp">worktree</samp>’ is the working tree where archives, patches, and recipes
- are expected. This variable can not be redefined in the recipe. Default
- sets to ‘<samp class="samp">/usr/src/qi</samp>’.
- </p>
- <p>‘<samp class="samp">tardir</samp>’ is defined in the recipe to the directory where the tarball
- containing the source can be found. The full name of the tarball is
- composed as ‘<samp class="samp">${tardir}/$tarname</samp>’. Its value is available in the
- recipe as ‘<samp class="samp">${tardir}</samp>’; a value of . for ‘<samp class="samp">tardir</samp>’ sets it to
- the value of CWD (Current Working Directory), this is where the recipe
- lives.
- </p>
- <p>‘<samp class="samp">arch</samp>’ is the architecture to compose the package name. Its value is
- available in the recipe as ‘<samp class="samp">${arch}</samp>’. Default value is the one
- that was set in the Qi configuration.
- </p>
- <p>‘<samp class="samp">jobs</samp>’ is the number of parallel jobs to pass to the compiler. Its
- value is available in the recipe as ‘<samp class="samp">${jobs}</samp>’. The default value
- is 1.
- </p>
- <p>The two variables ‘<samp class="samp">${srcdir}</samp>’ and ‘<samp class="samp">${destdir}</samp>’ can be
- set in the recipe, as any other variable, but if they are not, qi uses
- default values for them when building a package.
- </p>
- <p>‘<samp class="samp">srcdir</samp>’ contains the source code to be compiled, and defaults to
- ‘<samp class="samp">${program}-${version}</samp>’. ‘<samp class="samp">destdir</samp>’ is the place where the
- built package will be installed, and defaults to
- ‘<samp class="samp">${TMPDIR}/package-${program}</samp>’.
- </p>
- <p>If ‘<samp class="samp">pkgname</samp>’ is left undefined, the special variable ‘<samp class="samp">program</samp>’
- is assigned by default. If ‘<samp class="samp">pkgversion</samp>’ is left undefined, the
- special variable ‘<samp class="samp">version</samp>’ is assigned by default.
- </p>
- <p>‘<samp class="samp">pkgname</samp>’ and ‘<samp class="samp">pkgversion</samp>’ along with: ‘<samp class="samp">version</samp>’, ‘<samp class="samp">arch</samp>’,
- ‘<samp class="samp">release</samp>’, and (optionally) ‘<samp class="samp">pkgcategory</samp>’ are used to produce the
- package name in the form:
- ‘<samp class="samp">${pkgname}_${pkgversion}_${arch}-${release}[@${pkgcategory}].tlz</samp>’
- </p>
- <p>‘<samp class="samp">pkgcategory</samp>’ is an optional special variable that can be defined on the
- recipe to categorize the package name. If it is defined, then the
- package output will be composed as
- ‘<samp class="samp">${pkgname}_${pkgversion}_${arch}-${release}[@${pkgcategory}.tlz</samp>’.
- Automatically, the value of ‘<samp class="samp">pkgcategory</samp>’ will be prefixed using the
- ‘<samp class="samp">@</samp>’ (at) symbol which will be added to the last part of the package name.
- </p>
- <p>A special variable called ‘<samp class="samp">replace</samp>’ can be used to declare package names
- that will be replaced at installation time.
- </p>
- <p>The special variables ‘<samp class="samp">keep_srcdir</samp>’ and ‘<samp class="samp">keep_destdir</samp>’ are provided
- in order to preserve the directories ‘<samp class="samp">${srcdir}</samp>’ or ‘<samp class="samp">${destdir}</samp>’,
- if those exists as such. Note: The declaration of these variables are subject
- to manual deactivation; its purpose in recipes is to preserve the directories
- that relate to the package’s build (source) and destination directory, that is
- so that another recipe can get a new package (or meta package) from there. For
- example, the declarations can be done as:
- </p>
- <div class="example">
- <pre class="example-preformatted">keep_srcdir=keep_srcdir
- keep_destdir=keep_destdir
- </pre></div>
- <p>Then from another recipe you would proceed to copy the necessary files that
- will compose the meta package, from the main function you must deactivate
- the variables at the end:
- </p>
- <div class="example">
- <pre class="example-preformatted">unset -v keep_srcdir keep_destdir
- </pre></div>
- <p>This will leave the ’keep_srcdir’ and ’keep_destdir’ variables blank to
- continue with the rest of the recipes.
- </p>
- <p>The special variable ‘<samp class="samp">opt_skiprecipe</samp>’ is available when you need to
- ignore a recipe cleanly, continuing with the next recipe. May you add a
- conditional test then set it as ‘<samp class="samp">opt_skiprecipe=opt_skiprecipe</samp>’.
- </p>
- <p>The variable ‘<samp class="samp">tarlz_compression_options</samp>’ can be used to change the
- default compression options in tarlz(1), default sets to ‘<samp class="samp">-9 --solid</samp>’.
- For example if the variable is declared as:
- </p>
- <div class="example">
- <pre class="example-preformatted">tarlz_compression_options="-0 --bsolid"
- </pre></div>
- <p>It will change the granularity of tarlz(1) by using the ‘<samp class="samp">--bsolid</samp>’
- option <a class="footnote" id="DOCF3" href="#FOOT3"><sup>3</sup></a>,
- as well as increasing the compression speed by lowering the compression
- level with ‘<samp class="samp">-0</samp>’.
- </p>
- <p>This is only recommended for recipes where testing, or faster processing is
- desired to create the packaged file more quickly. It is not recommended for
- production or general distribution of binary packages.
- </p>
- <p>A typical recipe contains the following variables:
- </p>
- <ul class="itemize mark-bullet">
- <li>‘<samp class="samp">program</samp>’: Software name.
- <p>It matches the source name. It is also used to compose the name of the
- package if ‘<samp class="samp">${pkgname}</samp>’ is not specified.
- </p>
- </li><li>‘<samp class="samp">version</samp>’: Software version.
- <p>It matches the source name. It is also used to compose the version of the
- package if ‘<samp class="samp">${pkgversion}</samp>’ is not specified.
- </p>
- </li><li>‘<samp class="samp">arch</samp>’: Software architecture.
- <p>It is used to compose the architecture of the package in which it is
- build.
- </p>
- </li><li>‘<samp class="samp">release</samp>’: Release number.
- <p>This is used to reflect the release number of the package. It is
- recommended to increase this number after any significant change in
- the recipe or post-install script.
- </p>
- </li><li>‘<samp class="samp">pkgcategory</samp>’: Package category.
- <p>Optional but recommended variable to categorize the package name when it is
- created.
- </p></li></ul>
- <p>Obtaining sources over the network must be declared in the recipe using
- the ‘<samp class="samp">fetch</samp>’ variable.
- </p>
- <p>The variables ‘<samp class="samp">netget</samp>’ and ‘<samp class="samp">rsync</samp>’ can be defined in <samp class="file">qirc</samp>
- to establish a network downloader in order to get the sources. If they
- are not defined, qi uses default values:
- </p>
- <p>‘<samp class="samp">netget</samp>’ is the general network downloader tool, defaults sets to
- ‘<samp class="samp">wget2 -c -w1 -t3 --no-check-certificate</samp>’.
- </p>
- <p>‘<samp class="samp">rsync</samp>’ is the network tool for sources containing the prefix for
- the RSYNC protocol, default sets to
- ‘<samp class="samp">rsync -v -a -L -z -i --progress</samp>’.
- </p>
- <p>The variable ‘<samp class="samp">description</samp>’ is used to print the package description
- when a package is installed.
- </p>
- <p>A description has two parts: a brief description, and a long description.
- By convention, the syntax of ‘<samp class="samp">description</samp>’ is:
- </p>
- <div class="example">
- <pre class="example-preformatted">description="
- Brief description.
- Long description.
- "
- </pre></div>
- <p>The first line of the value represented is a brief description of the
- software (called "blurb"). A blank line separates the <em class="emph">brief
- description</em> from the <em class="emph">long description</em>, which should contain a more
- descriptive description of the software.
- </p>
- <p>An example looks like:
- </p>
- <div class="example">
- <pre class="example-preformatted">description="
- The GNU core utilities.
- The GNU core utilities are the basic file, shell and text manipulation
- utilities of the GNU operating system. These are the core utilities
- which are expected to exist on every operating system.
- "
- </pre></div>
- <p>Please consider a length limit of 78 characters as maximum, because the same
- one would be used on the meta file creation. See
- <a class="ref" href="#Recipes">The meta file</a> section.
- </p>
- <p>The ‘<samp class="samp">homepage</samp>’ variable is used to declare the main site or home page:
- </p>
- <div class="example">
- <pre class="example-preformatted">homepage=https://www.gnu.org/software/gcc
- </pre></div>
- <p>The variable ‘<samp class="samp">license</samp>’ is used for license information<a class="footnote" id="DOCF4" href="#FOOT4"><sup>4</sup></a>.
- Some code in the program can be covered by license A, license B, or
- license C. For "separate licensing" or "heterogeneous licensing", we
- suggest using <strong class="strong">|</strong> for a disjunction, <strong class="strong">&</strong> for a conjunction
- (if that ever happens in a significant way), and comma for heterogeneous
- licensing. Comma would have lower precedence, plus added special terms.
- </p>
- <div class="example">
- <pre class="example-preformatted">license="LGPL, GPL | Artistic - added permission"
- </pre></div>
- </div>
- <div class="section-level-extent" id="Writing-recipes">
- <h3 class="section"><span>16.3 Writing recipes<a class="copiable-link" href="#Writing-recipes"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-writing-recipes"></a>
- <p>Originally, Qi was designed for the series of Dragora GNU/Linux-Libre 3;
- this doesn’t mean you can’t use it in another distribution, just that if
- you do, you’ll have to try it out for yourself. To help with this, here
- are some references to well-written recipes:
- </p>
- <ul class="itemize mark-bullet">
- <li><a class="url" href="https://git.savannah.nongnu.org/cgit/dragora.git/tree/recipes">https://git.savannah.nongnu.org/cgit/dragora.git/tree/recipes</a>
- </li><li><a class="url" href="https://notabug.org/dragora/dragora/src/master/recipes">https://notabug.org/dragora/dragora/src/master/recipes</a>
- </li><li><a class="url" href="https://notabug.org/dragora/dragora-extras/src/master/recipes">https://notabug.org/dragora/dragora-extras/src/master/recipes</a>
- </li><li><a class="url" href="https://git.savannah.nongnu.org/cgit/dragora/dragora-extras.git/tree/recipes">https://git.savannah.nongnu.org/cgit/dragora/dragora-extras.git/tree/recipes</a>
- </li></ul>
- </div>
- <div class="section-level-extent" id="Building-packages">
- <h3 class="section"><span>16.4 Building packages<a class="copiable-link" href="#Building-packages"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-package-build"></a>
- <p>A recipe is any valid regular file. Qi sets priorities for reading a
- recipe, the order in which qi looks for a recipe is:
- </p>
- <ol class="enumerate">
- <li> Current working directory.
- </li><li> If the specified path name does not contain "recipe" as the last
- component. Qi will complete it by adding "recipe" to the path name.
- </li><li> If the recipe is not in the current working directory, it will be
- searched under ‘<samp class="samp">${worktree}/recipes</samp>’. The last component will be
- completed adding "recipe" to the specified path name.
- </li></ol>
- <p>To build a single package, type:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi build x-apps/xterm
- </pre></div>
- <p>Multiple jobs can be passed to the compiler to speed up the build process:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi build --jobs 3 x-apps/xterm
- </pre></div>
- <p>Update or install the produced package (if not already installed) when the
- build command ends:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi build -j3 --upgrade x-apps/xterm
- </pre></div>
- <p>Only process a recipe but do not create the binary package:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi build --no-package dict/aspell
- </pre></div>
- <p>The options –install or –upgrade have no effect when –no-package
- is given.
- </p>
- <p>This is useful to inspect the build process of the above recipe:
- </p>
- <p>qi build –keep –no-package dict/aspell 2>&1 | tee aspell-log.txt
- </p>
- <p>The –keep option could preserve the source directory and the destination
- directory for later inspection. A log file of the build process will be
- created redirecting both, standard error and standard output to tee(1).
- </p>
- </div>
- <div class="section-level-extent" id="Variables-from-the-environment">
- <h3 class="section"><span>16.5 Variables from the environment<a class="copiable-link" href="#Variables-from-the-environment"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-environment-variables"></a>
- <p>Qi has environment variables which can be used at build time:
- </p>
- <p>The variable <code class="env">TMPDIR</code> sets the temporary directory for sources, which is
- used for package extractions (see <a class="ref" href="#Examining-packages">Examining packages</a>) and is
- prepended to the value of ‘<samp class="samp">${srcdir}</samp>’ and ‘<samp class="samp">${destdir}</samp>’ in
- build command. By convention its default value is equal to
- ‘<samp class="samp">/usr/src/qi/build</samp>’.
- </p>
- <p>The variables <code class="env">QICFLAGS</code>, <code class="env">QICXXFLAGS</code>, <code class="env">QILDFLAGS</code>, and
- <code class="env">QICPPFLAGS</code> have no effect by default. The environment variables
- such as <code class="env">CFLAGS</code>, <code class="env">CXXFLAGS</code>, <code class="env">LDFLAGS</code>, and <code class="env">CPPFLAGS</code>
- are unset at compile time:
- </p>
- <p>Recommended practice is to set variables in the command line of
- ‘<samp class="samp">configure</samp>’ or <em class="emph">make(1)</em> instead of exporting to the
- environment. As follows:
- </p>
- <p><a class="url" href="https://www.gnu.org/software/make/manual/html_node/Environment.html">https://www.gnu.org/software/make/manual/html_node/Environment.html</a>
- </p><blockquote class="quotation">
- <p>It is not wise for makefiles to depend for their functioning on environment
- variables set up outside their control, since this would cause different
- users to get different results from the same makefile. This is against the
- whole purpose of most makefiles.
- </p></blockquote>
- <p>Setting environment variables for configure is deprecated because running
- configure in varying environments can be dangerous.
- </p>
- <p><a class="url" href="https://gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Defining-Variables.html">https://gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Defining-Variables.html</a>
- </p><blockquote class="quotation">
- <p>Variables not defined in a site shell script can be set in the environment
- passed to configure. However, some packages may run configure again
- during the build, and the customized values of these variables may be
- lost. In order to avoid this problem, you should set them in the
- configure command line, using ‘<samp class="samp">VAR=value</samp>’. For example:
- </p>
- <p><code class="code">./configure CC=/usr/local2/bin/gcc</code>
- </p></blockquote>
- <p><a class="url" href="https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Setting-Output-Variables.html">https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Setting-Output-Variables.html</a>
- </p><blockquote class="quotation">
- <p>If for instance the user runs ‘<samp class="samp">CC=bizarre-cc ./configure</samp>’, then the cache,
- config.h, and many other output files depend upon bizarre-cc being the C
- compiler. If for some reason the user runs ./configure again, or if it is
- run via ‘<samp class="samp">./config.status --recheck</samp>’, (See Automatic Remaking, and see
- config.status Invocation), then the configuration can be inconsistent,
- composed of results depending upon two different compilers.
- [...]
- Indeed, while configure can notice the definition of CC in ‘<samp class="samp">./configure
- CC=bizarre-cc</samp>’, it is impossible to notice it in ‘<samp class="samp">CC=bizarre-cc
- ./configure</samp>’, which, unfortunately, is what most users do.
- [...]
- configure: error: changes in the environment can compromise the build.
- </p></blockquote>
- <p>If the <code class="env">SOURCE_DATE_EPOCH</code> environment variable is set to a UNIX timestamp
- (defined as the number of seconds, excluding leap seconds, since 01 Jan 1970
- 00:00:00 UTC.); then the given timestamp will be used to overwrite any newer
- timestamps on the package contents (when it is created). More information
- about this can be found at
- <a class="uref" href="https://reproducible-builds.org/specs/source-date-epoch/">https://reproducible-builds.org/specs/source-date-epoch/</a>.
- </p>
- </div>
- <div class="section-level-extent" id="The-meta-file">
- <h3 class="section"><span>16.6 The meta file<a class="copiable-link" href="#The-meta-file"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-the-meta-file"></a>
- <p>The "meta file" is a regular file created during the build process, it
- contains information about the package such as package name, package
- version, architecture, release, fetch address, description, and other
- minor data extracted from processed recipes. The name of the file is
- generated as ‘<samp class="samp">${full_pkgname}.tlz.txt</samp>’, and its purpose is to
- reflect essential information to the user without having to look inside
- the package content. The file format is also intended to be used by
- other scripts or by common Unix tools.
- </p>
- <p>The content of a meta file looks like:
- </p>
- <div class="example">
- <pre class="example-preformatted">#
- # Pattern scanning and processing language.
- #
- # The awk utility interprets a special-purpose programming language
- # that makes it possible to handle simple data-reformatting jobs
- # with just a few lines of code. It is a free version of 'awk'.
- #
- # GNU awk implements the AWK utility which is part of
- # IEEE Std 1003.1 Shell and Utilities (XCU).
- #
- QICFLAGS="-O2"
- QICXXFLAGS="-O2"
- QILDFLAGS=""
- QICPPFLAGS=""
- pkgname=gawk
- pkgversion=5.0.1
- arch=amd64
- release=1
- pkgcategory="tools"
- full_pkgname=gawk_5.0.1_amd64-1@tools
- blurb="Pattern scanning and processing language."
- homepage="https://www.gnu.org/software/gawk"
- license="GPLv3+"
- fetch="https://ftp.gnu.org/gnu/gawk/gawk-5.0.1.tar.lz"
- replace=""
- </pre></div>
- <p>A package descriptions is extracted from the variable ‘<samp class="samp">description</samp>’
- where each line is interpreted literally and pre-formatted to fit in
- (exactly) <strong class="strong">80 columns</strong>, plus the character ‘<samp class="samp">#</samp>’ and a blank
- space is prefixed to every line (shell comments).
- </p>
- <p>In addition to the Special variables, there are implicit variables such as
- ‘<samp class="samp">blurb</samp>’:
- </p>
- <p>The ‘<samp class="samp">blurb</samp>’ variable is related to the special variable
- ‘<samp class="samp">description</samp>’. Its value is made from the first (substantial)
- line of ‘<samp class="samp">description</samp>’, mentioned as the "brief description".
- </p>
- <p>The build flags such as ‘<samp class="samp">QICFLAGS</samp>’, ‘<samp class="samp">QICXXFLAGS</samp>’,
- ‘<samp class="samp">QILDFLAGS</samp>’, and ‘<samp class="samp">QICPPFLAGS</samp>’ are only added to the meta file
- if the declared variable ‘<samp class="samp">arch</samp>’ is not equal to the "noarch" value.
- </p>
- <hr>
- </div>
- </div>
- <div class="chapter-level-extent" id="Order-files">
- <div class="nav-panel">
- <p>
- Next: <a href="#Creating-packages" accesskey="n" rel="next">Creating packages</a>, Previous: <a href="#Recipes" accesskey="p" rel="prev">Recipes</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Order-files-1"><span>17 Order files<a class="copiable-link" href="#Order-files-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-handling-build-order"></a>
- <p>The order command has the purpose of resolving the build order through
- .order files. An order file contains a list of recipe names, by default
- does not perform any action other than to print a resolved list in
- descending order. For example, if <strong class="strong">a</strong> depends on <strong class="strong">b</strong> and
- <strong class="strong">c</strong>, and <strong class="strong">c</strong> depends on <strong class="strong">b</strong> as well, the file might
- look like:
- </p>
- <div class="example">
- <pre class="example-preformatted">a: c b
- b:
- c: b
- </pre></div>
- <p>Each letter represents a recipe name, complete dependencies for
- the first recipe name are listed in descending order, which is
- printed from right to left, and removed from left to right:
- </p>
- <p><small class="sc">OUTPUT</small>
- </p>
- <div class="example">
- <pre class="example-preformatted">b
- c
- a
- </pre></div>
- <p>Blank lines, colons and parentheses are simply ignored. Comment lines
- beginning with ‘<samp class="samp">#</samp>’ are allowed.
- </p>
- <p>An order file could be used to build a series of packages, for example,
- if the content is:
- </p>
- <div class="example">
- <pre class="example-preformatted"># Image handling libraries
- libs/libjpeg-turbo: devel/nasm
- x-libs/jasper: libs/libjpeg-turbo
- libs/tiff: libs/libjpeg-turbo
- </pre></div>
- <p>To proceed with each recipe, we can type:
- </p>
- <div class="example">
- <pre class="example-preformatted">qi order imglibs.order | qi build --install -
- </pre></div>
- <p>The output of ‘<samp class="samp">qi order imglibs.order</samp>’ tells to qi in which order it
- should build the recipes:
- </p>
- <div class="example">
- <pre class="example-preformatted">devel/nasm
- libs/libjpeg-turbo
- x-libs/jasper
- libs/tiff
- </pre></div>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Creating-packages">
- <div class="nav-panel">
- <p>
- Next: <a href="#Examining-packages" accesskey="n" rel="next">Examining packages</a>, Previous: <a href="#Order-files" accesskey="p" rel="prev">Order files</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Creating-packages-1"><span>18 Creating packages<a class="copiable-link" href="#Creating-packages-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-package-creation"></a>
- <p>The creation command is an internal function of qi to make new Qi
- compatible packages. A package is produced using the contents of
- the Current Working Directory and the package file is written out.
- </p>
- <div class="example">
- <pre class="example-preformatted">Usage: qi create [<var class="var">Output/PackageName.tlz</var>]...
- </pre></div>
- <p>The argument for the file name to be written must contain a fully
- qualified named directory as the output directory where the package
- produced will be written. The file name should be composed using the
- full name: name-version-architecture-release[@pkgcategory].tlz
- </p>
- <p><small class="sc">EXAMPLE</small>
- </p>
- <div class="example">
- <pre class="example-preformatted">cd /usr/pkg
- cd claws-mail_3.17.1_amd64-1@x-apps
- qi create /var/cache/qi/packages/claws-mail_3.17.1_amd64-1@x-apps
- </pre></div>
- <p>In this case, the package "claws-mail_3.17.1_amd64-1@x-apps" will be
- written into ‘<samp class="samp">/var/cache/qi/packages/</samp>’.
- </p>
- <p>All packages produced are complemented by a checksum file (.sha256).
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Examining-packages">
- <div class="nav-panel">
- <p>
- Next: <a href="#Qi-exit-status" accesskey="n" rel="next">Qi exit status</a>, Previous: <a href="#Creating-packages" accesskey="p" rel="prev">Creating packages</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Examining-packages-1"><span>19 Examining packages<a class="copiable-link" href="#Examining-packages-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-package-examination"></a>
- <p>The extraction command serves to examine binary packages for debugging
- purposes. It decompresses a package into a single directory, verifying
- its integrity and preserving all of its properties (owner and permissions).
- </p>
- <div class="example">
- <pre class="example-preformatted">Usage: qi extract [<var class="var">packagename.tlz</var>]...
- </pre></div>
- <p><small class="sc">EXAMPLE</small>
- </p>
- <div class="example">
- <pre class="example-preformatted">qi extract mksh_R56c_amd64-1@shells.tlz
- </pre></div>
- <p>This action will put the content of "mksh_R56c_amd64-1@shells.tlz" into a
- single directory, this is a private directory for the user who requested
- the action, creation operation will be equal to <strong class="strong">u=rwx,g=,o= (0700)</strong>.
- The package content will reside on this location, default mask to deploy
- the content will be equal to <strong class="strong">u=rwx,g=rwx,o=rwx (0000)</strong>.
- </p>
- <p>Note: the creation of the custom directory is influenced by the value
- of the <code class="env">TMPDIR</code> variable.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Qi-exit-status">
- <div class="nav-panel">
- <p>
- Next: <a href="#Getting-support" accesskey="n" rel="next">Getting support</a>, Previous: <a href="#Examining-packages" accesskey="p" rel="prev">Examining packages</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Qi-exit-status-1"><span>20 Qi exit status<a class="copiable-link" href="#Qi-exit-status-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-exit-codes"></a>
- <p>All the exit codes are described in this chapter.
- </p>
- <dl class="table">
- <dt>‘<samp class="samp">0</samp>’</dt>
- <dd><p>Successful completion (no errors).
- </p>
- </dd>
- <dt>‘<samp class="samp">1</samp>’</dt>
- <dd><p>Minor common errors:
- </p>
- <ul class="itemize mark-bullet">
- <li>Help usage on invalid options or required arguments.
- </li><li>Program needed by qi (prerequisite) is not available.
- </li></ul>
- </dd>
- <dt>‘<samp class="samp">2</samp>’</dt>
- <dd><p>Command execution error:
- </p>
- <p>This code is used to return the evaluation of an external command or shell
- arguments in case of failure.
- </p>
- </dd>
- <dt>‘<samp class="samp">3</samp>’</dt>
- <dd><p>Integrity check error for compressed files.
- </p>
- <p>Compressed files means:
- </p>
- <ul class="itemize mark-bullet">
- <li>A tarball file from tar(1), typically handled by the GNU tar implementation.
- Supported extensions: .tar, .tar.gz, .tgz, .tar.Z, .tar.bz2, .tbz2, .tbz,
- .tar.xz, .txz, .tar.zst, .tzst
- </li><li>A tarball file from tarlz(1).
- Supported extensions: .tar.lz, .tlz
- </li><li>Zip files from unzip(1).
- Supported extensions: .zip, .ZIP
- </li><li>Gzip files from gzip(1).
- Supported extensions: .gz, .Z
- </li><li>Bzip2 files from bzip2(1).
- Supported extension: .bz2
- </li><li>Lzip files from lzip(1).
- Supported extension: .lz
- </li><li>Xz files from xz(1).
- Supported extension: .xz
- </li><li>Zstd files from zstd(1).
- Supported extension: .zst
- </li></ul>
- </dd>
- <dt>‘<samp class="samp">4</samp>’</dt>
- <dd><p>File empty, not regular, or expected.
- </p>
- <p>It’s commonly expected:
- </p>
- <ul class="itemize mark-bullet">
- <li>An argument for giving commands.
- </li><li>A regular file or readable directory.
- </li><li>An expected extension: .tlz, .sha256, .order.
- </li><li>A protocol supported by the network downloader tool.
- </li></ul>
- </dd>
- <dt>‘<samp class="samp">5</samp>’</dt>
- <dd><p>Empty or not defined variable:
- </p>
- <p>This code is used to report empty or undefined variables (usually
- variables coming from a recipe or assigned arrays that are tested).
- </p>
- </dd>
- <dt>‘<samp class="samp">6</samp>’</dt>
- <dd><p>Package already installed:
- </p>
- <p>The package directory for an incoming .tlz package already exists.
- </p>
- </dd>
- <dt>‘<samp class="samp">10</samp>’</dt>
- <dd><p>Network manager error:
- </p>
- <p>This code is used if the network downloader tool fails for some reason.
- </p></dd>
- </dl>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Getting-support">
- <div class="nav-panel">
- <p>
- Next: <a href="#Contributing-to-Dragora" accesskey="n" rel="next">Contributing to Dragora</a>, Previous: <a href="#Qi-exit-status" accesskey="p" rel="prev">Qi exit status</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Getting-support-1"><span>21 Getting support<a class="copiable-link" href="#Getting-support-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-getting-support"></a>
- <p>Dragora’s home page can be found at <a class="uref" href="https://www.dragora.org">https://www.dragora.org</a>.
- Bug reports or suggestions can be sent to <a class="email" href="mailto:dragora-users@nongnu.org">dragora-users@nongnu.org</a>.
- </p>
- <hr>
- </div>
- <div class="chapter-level-extent" id="Contributing-to-Dragora">
- <div class="nav-panel">
- <p>
- Next: <a href="#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="#Getting-support" accesskey="p" rel="prev">Getting support</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="chapter" id="Contributing-to-Dragora-1"><span>22 Contributing to Dragora<a class="copiable-link" href="#Contributing-to-Dragora-1"> ¶</a></span></h2>
- <a class="index-entry-id" id="index-contributing-to-dragora"></a>
- <p>TODO (introductory text here).
- </p>
- <ul class="mini-toc">
- <li><a href="#How-to-place-a-mirror" accesskey="1">How to place a mirror</a></li>
- </ul>
- <div class="section-level-extent" id="How-to-place-a-mirror">
- <h3 class="section"><span>22.1 How to place a mirror<a class="copiable-link" href="#How-to-place-a-mirror"> ¶</a></span></h3>
- <a class="index-entry-id" id="index-how-to-place-a-mirror"></a>
- <p>If there’s no Dragora mirror near you, you’re welcome to contribute one.
- </p>
- <p>First, for users or downloaders, the address <em class="emph">rsync://rsync.dragora.org/</em>
- contains ISO images and source code (in various formats) taken from the
- original sites and distributed by Dragora.
- </p>
- <p>Mirroring the Dragora server requires approximately 13GB of disk space (as
- of January 2022). You can hit rsync directly from <em class="emph">rsync.dragora.org</em> as:
- </p>
- <p><code class="code">rsync -rltpHS --delete-excluded rsync://rsync.dragora.org/dragora /your/dir/</code>
- </p>
- <p>Also, consider mirroring from another site in order to reduce load on the
- Dragora server. The listed sites at
- <a class="url" href="https://www.dragora.org/en/get/mirrors/index.html">https://www.dragora.org/en/get/mirrors/index.html</a> provide access to all
- the material on rsync.dragora.org. They update from us nightly (at least),
- and you may access them via rsync with the same options as above.
- </p>
- <p>Note:
- </p>
- <p>We keep a file called "timestamp" under the main tree after each
- synchronization. This file can be used to verify, instead of synchronizing
- all the content at once, you can check if this file has been updated and
- then continue with the full synchronization.
- </p>
- <hr>
- </div>
- </div>
- <div class="appendix-level-extent" id="GNU-Free-Documentation-License">
- <div class="nav-panel">
- <p>
- Next: <a href="#Index" accesskey="n" rel="next">Index</a>, Previous: <a href="#Contributing-to-Dragora" accesskey="p" rel="prev">Contributing to Dragora</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="appendix" id="GNU-Free-Documentation-License-1"><span>Appendix A GNU Free Documentation License<a class="copiable-link" href="#GNU-Free-Documentation-License-1"> ¶</a></span></h2>
- <div class="center">Version 1.3, 3 November 2008
- </div>
- <div class="display">
- <pre class="display-preformatted">Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
- <a class="uref" href="https://fsf.org/">https://fsf.org/</a>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
- </pre></div>
- <ol class="enumerate" start="0">
- <li> PREAMBLE
- <p>The purpose of this License is to make a manual, textbook, or other
- functional and useful document <em class="dfn">free</em> in the sense of freedom: to
- assure everyone the effective freedom to copy and redistribute it,
- with or without modifying it, either commercially or noncommercially.
- Secondarily, this License preserves for the author and publisher a way
- to get credit for their work, while not being considered responsible
- for modifications made by others.
- </p>
- <p>This License is a kind of “copyleft”, which means that derivative
- works of the document must themselves be free in the same sense. It
- complements the GNU General Public License, which is a copyleft
- license designed for free software.
- </p>
- <p>We have designed this License in order to use it for manuals for free
- software, because free software needs free documentation: a free
- program should come with manuals providing the same freedoms that the
- software does. But this License is not limited to software manuals;
- it can be used for any textual work, regardless of subject matter or
- whether it is published as a printed book. We recommend this License
- principally for works whose purpose is instruction or reference.
- </p>
- </li><li> APPLICABILITY AND DEFINITIONS
- <p>This License applies to any manual or other work, in any medium, that
- contains a notice placed by the copyright holder saying it can be
- distributed under the terms of this License. Such a notice grants a
- world-wide, royalty-free license, unlimited in duration, to use that
- work under the conditions stated herein. The “Document”, below,
- refers to any such manual or work. Any member of the public is a
- licensee, and is addressed as “you”. You accept the license if you
- copy, modify or distribute the work in a way requiring permission
- under copyright law.
- </p>
- <p>A “Modified Version” of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with
- modifications and/or translated into another language.
- </p>
- <p>A “Secondary Section” is a named appendix or a front-matter section
- of the Document that deals exclusively with the relationship of the
- publishers or authors of the Document to the Document’s overall
- subject (or to related matters) and contains nothing that could fall
- directly within that overall subject. (Thus, if the Document is in
- part a textbook of mathematics, a Secondary Section may not explain
- any mathematics.) The relationship could be a matter of historical
- connection with the subject or with related matters, or of legal,
- commercial, philosophical, ethical or political position regarding
- them.
- </p>
- <p>The “Invariant Sections” are certain Secondary Sections whose titles
- are designated, as being those of Invariant Sections, in the notice
- that says that the Document is released under this License. If a
- section does not fit the above definition of Secondary then it is not
- allowed to be designated as Invariant. The Document may contain zero
- Invariant Sections. If the Document does not identify any Invariant
- Sections then there are none.
- </p>
- <p>The “Cover Texts” are certain short passages of text that are listed,
- as Front-Cover Texts or Back-Cover Texts, in the notice that says that
- the Document is released under this License. A Front-Cover Text may
- be at most 5 words, and a Back-Cover Text may be at most 25 words.
- </p>
- <p>A “Transparent” copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the
- general public, that is suitable for revising the document
- straightforwardly with generic text editors or (for images composed of
- pixels) generic paint programs or (for drawings) some widely available
- drawing editor, and that is suitable for input to text formatters or
- for automatic translation to a variety of formats suitable for input
- to text formatters. A copy made in an otherwise Transparent file
- format whose markup, or absence of markup, has been arranged to thwart
- or discourage subsequent modification by readers is not Transparent.
- An image format is not Transparent if used for any substantial amount
- of text. A copy that is not “Transparent” is called “Opaque”.
- </p>
- <p>Examples of suitable formats for Transparent copies include plain
- ASCII without markup, Texinfo input format, LaTeX input
- format, SGML or XML using a publicly available
- DTD, and standard-conforming simple HTML,
- PostScript or PDF designed for human modification. Examples
- of transparent image formats include PNG, XCF and
- JPG. Opaque formats include proprietary formats that can be
- read and edited only by proprietary word processors, SGML or
- XML for which the DTD and/or processing tools are
- not generally available, and the machine-generated HTML,
- PostScript or PDF produced by some word processors for
- output purposes only.
- </p>
- <p>The “Title Page” means, for a printed book, the title page itself,
- plus such following pages as are needed to hold, legibly, the material
- this License requires to appear in the title page. For works in
- formats which do not have any title page as such, “Title Page” means
- the text near the most prominent appearance of the work’s title,
- preceding the beginning of the body of the text.
- </p>
- <p>The “publisher” means any person or entity that distributes copies
- of the Document to the public.
- </p>
- <p>A section “Entitled XYZ” means a named subunit of the Document whose
- title either is precisely XYZ or contains XYZ in parentheses following
- text that translates XYZ in another language. (Here XYZ stands for a
- specific section name mentioned below, such as “Acknowledgements”,
- “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title”
- of such a section when you modify the Document means that it remains a
- section “Entitled XYZ” according to this definition.
- </p>
- <p>The Document may include Warranty Disclaimers next to the notice which
- states that this License applies to the Document. These Warranty
- Disclaimers are considered to be included by reference in this
- License, but only as regards disclaiming warranties: any other
- implication that these Warranty Disclaimers may have is void and has
- no effect on the meaning of this License.
- </p>
- </li><li> VERBATIM COPYING
- <p>You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License applies
- to the Document are reproduced in all copies, and that you add no other
- conditions whatsoever to those of this License. You may not use
- technical measures to obstruct or control the reading or further
- copying of the copies you make or distribute. However, you may accept
- compensation in exchange for copies. If you distribute a large enough
- number of copies you must also follow the conditions in section 3.
- </p>
- <p>You may also lend copies, under the same conditions stated above, and
- you may publicly display copies.
- </p>
- </li><li> COPYING IN QUANTITY
- <p>If you publish printed copies (or copies in media that commonly have
- printed covers) of the Document, numbering more than 100, and the
- Document’s license notice requires Cover Texts, you must enclose the
- copies in covers that carry, clearly and legibly, all these Cover
- Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
- the back cover. Both covers must also clearly and legibly identify
- you as the publisher of these copies. The front cover must present
- the full title with all words of the title equally prominent and
- visible. You may add other material on the covers in addition.
- Copying with changes limited to the covers, as long as they preserve
- the title of the Document and satisfy these conditions, can be treated
- as verbatim copying in other respects.
- </p>
- <p>If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto adjacent
- pages.
- </p>
- <p>If you publish or distribute Opaque copies of the Document numbering
- more than 100, you must either include a machine-readable Transparent
- copy along with each Opaque copy, or state in or with each Opaque copy
- a computer-network location from which the general network-using
- public has access to download using public-standard network protocols
- a complete Transparent copy of the Document, free of added material.
- If you use the latter option, you must take reasonably prudent steps,
- when you begin distribution of Opaque copies in quantity, to ensure
- that this Transparent copy will remain thus accessible at the stated
- location until at least one year after the last time you distribute an
- Opaque copy (directly or through your agents or retailers) of that
- edition to the public.
- </p>
- <p>It is requested, but not required, that you contact the authors of the
- Document well before redistributing any large number of copies, to give
- them a chance to provide you with an updated version of the Document.
- </p>
- </li><li> MODIFICATIONS
- <p>You may copy and distribute a Modified Version of the Document under
- the conditions of sections 2 and 3 above, provided that you release
- the Modified Version under precisely this License, with the Modified
- Version filling the role of the Document, thus licensing distribution
- and modification of the Modified Version to whoever possesses a copy
- of it. In addition, you must do these things in the Modified Version:
- </p>
- <ol class="enumerate" type="A" start="1">
- <li> Use in the Title Page (and on the covers, if any) a title distinct
- from that of the Document, and from those of previous versions
- (which should, if there were any, be listed in the History section
- of the Document). You may use the same title as a previous version
- if the original publisher of that version gives permission.
- </li><li> List on the Title Page, as authors, one or more persons or entities
- responsible for authorship of the modifications in the Modified
- Version, together with at least five of the principal authors of the
- Document (all of its principal authors, if it has fewer than five),
- unless they release you from this requirement.
- </li><li> State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
- </li><li> Preserve all the copyright notices of the Document.
- </li><li> Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
- </li><li> Include, immediately after the copyright notices, a license notice
- giving the public permission to use the Modified Version under the
- terms of this License, in the form shown in the Addendum below.
- </li><li> Preserve in that license notice the full lists of Invariant Sections
- and required Cover Texts given in the Document’s license notice.
- </li><li> Include an unaltered copy of this License.
- </li><li> Preserve the section Entitled “History”, Preserve its Title, and add
- to it an item stating at least the title, year, new authors, and
- publisher of the Modified Version as given on the Title Page. If
- there is no section Entitled “History” in the Document, create one
- stating the title, year, authors, and publisher of the Document as
- given on its Title Page, then add an item describing the Modified
- Version as stated in the previous sentence.
- </li><li> Preserve the network location, if any, given in the Document for
- public access to a Transparent copy of the Document, and likewise
- the network locations given in the Document for previous versions
- it was based on. These may be placed in the “History” section.
- You may omit a network location for a work that was published at
- least four years before the Document itself, or if the original
- publisher of the version it refers to gives permission.
- </li><li> For any section Entitled “Acknowledgements” or “Dedications”, Preserve
- the Title of the section, and preserve in the section all the
- substance and tone of each of the contributor acknowledgements and/or
- dedications given therein.
- </li><li> Preserve all the Invariant Sections of the Document,
- unaltered in their text and in their titles. Section numbers
- or the equivalent are not considered part of the section titles.
- </li><li> Delete any section Entitled “Endorsements”. Such a section
- may not be included in the Modified Version.
- </li><li> Do not retitle any existing section to be Entitled “Endorsements” or
- to conflict in title with any Invariant Section.
- </li><li> Preserve any Warranty Disclaimers.
- </li></ol>
- <p>If the Modified Version includes new front-matter sections or
- appendices that qualify as Secondary Sections and contain no material
- copied from the Document, you may at your option designate some or all
- of these sections as invariant. To do this, add their titles to the
- list of Invariant Sections in the Modified Version’s license notice.
- These titles must be distinct from any other section titles.
- </p>
- <p>You may add a section Entitled “Endorsements”, provided it contains
- nothing but endorsements of your Modified Version by various
- parties—for example, statements of peer review or that the text has
- been approved by an organization as the authoritative definition of a
- standard.
- </p>
- <p>You may add a passage of up to five words as a Front-Cover Text, and a
- passage of up to 25 words as a Back-Cover Text, to the end of the list
- of Cover Texts in the Modified Version. Only one passage of
- Front-Cover Text and one of Back-Cover Text may be added by (or
- through arrangements made by) any one entity. If the Document already
- includes a cover text for the same cover, previously added by you or
- by arrangement made by the same entity you are acting on behalf of,
- you may not add another; but you may replace the old one, on explicit
- permission from the previous publisher that added the old one.
- </p>
- <p>The author(s) and publisher(s) of the Document do not by this License
- give permission to use their names for publicity for or to assert or
- imply endorsement of any Modified Version.
- </p>
- </li><li> COMBINING DOCUMENTS
- <p>You may combine the Document with other documents released under this
- License, under the terms defined in section 4 above for modified
- versions, provided that you include in the combination all of the
- Invariant Sections of all of the original documents, unmodified, and
- list them all as Invariant Sections of your combined work in its
- license notice, and that you preserve all their Warranty Disclaimers.
- </p>
- <p>The combined work need only contain one copy of this License, and
- multiple identical Invariant Sections may be replaced with a single
- copy. If there are multiple Invariant Sections with the same name but
- different contents, make the title of each such section unique by
- adding at the end of it, in parentheses, the name of the original
- author or publisher of that section if known, or else a unique number.
- Make the same adjustment to the section titles in the list of
- Invariant Sections in the license notice of the combined work.
- </p>
- <p>In the combination, you must combine any sections Entitled “History”
- in the various original documents, forming one section Entitled
- “History”; likewise combine any sections Entitled “Acknowledgements”,
- and any sections Entitled “Dedications”. You must delete all
- sections Entitled “Endorsements.”
- </p>
- </li><li> COLLECTIONS OF DOCUMENTS
- <p>You may make a collection consisting of the Document and other documents
- released under this License, and replace the individual copies of this
- License in the various documents with a single copy that is included in
- the collection, provided that you follow the rules of this License for
- verbatim copying of each of the documents in all other respects.
- </p>
- <p>You may extract a single document from such a collection, and distribute
- it individually under this License, provided you insert a copy of this
- License into the extracted document, and follow this License in all
- other respects regarding verbatim copying of that document.
- </p>
- </li><li> AGGREGATION WITH INDEPENDENT WORKS
- <p>A compilation of the Document or its derivatives with other separate
- and independent documents or works, in or on a volume of a storage or
- distribution medium, is called an “aggregate” if the copyright
- resulting from the compilation is not used to limit the legal rights
- of the compilation’s users beyond what the individual works permit.
- When the Document is included in an aggregate, this License does not
- apply to the other works in the aggregate which are not themselves
- derivative works of the Document.
- </p>
- <p>If the Cover Text requirement of section 3 is applicable to these
- copies of the Document, then if the Document is less than one half of
- the entire aggregate, the Document’s Cover Texts may be placed on
- covers that bracket the Document within the aggregate, or the
- electronic equivalent of covers if the Document is in electronic form.
- Otherwise they must appear on printed covers that bracket the whole
- aggregate.
- </p>
- </li><li> TRANSLATION
- <p>Translation is considered a kind of modification, so you may
- distribute translations of the Document under the terms of section 4.
- Replacing Invariant Sections with translations requires special
- permission from their copyright holders, but you may include
- translations of some or all Invariant Sections in addition to the
- original versions of these Invariant Sections. You may include a
- translation of this License, and all the license notices in the
- Document, and any Warranty Disclaimers, provided that you also include
- the original English version of this License and the original versions
- of those notices and disclaimers. In case of a disagreement between
- the translation and the original version of this License or a notice
- or disclaimer, the original version will prevail.
- </p>
- <p>If a section in the Document is Entitled “Acknowledgements”,
- “Dedications”, or “History”, the requirement (section 4) to Preserve
- its Title (section 1) will typically require changing the actual
- title.
- </p>
- </li><li> TERMINATION
- <p>You may not copy, modify, sublicense, or distribute the Document
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense, or distribute it is void, and
- will automatically terminate your rights under this License.
- </p>
- <p>However, if you cease all violation of this License, then your license
- from a particular copyright holder is reinstated (a) provisionally,
- unless and until the copyright holder explicitly and finally
- terminates your license, and (b) permanently, if the copyright holder
- fails to notify you of the violation by some reasonable means prior to
- 60 days after the cessation.
- </p>
- <p>Moreover, your license from a particular copyright holder is
- reinstated permanently if the copyright holder notifies you of the
- violation by some reasonable means, this is the first time you have
- received notice of violation of this License (for any work) from that
- copyright holder, and you cure the violation prior to 30 days after
- your receipt of the notice.
- </p>
- <p>Termination of your rights under this section does not terminate the
- licenses of parties who have received copies or rights from you under
- this License. If your rights have been terminated and not permanently
- reinstated, receipt of a copy of some or all of the same material does
- not give you any rights to use it.
- </p>
- </li><li> FUTURE REVISIONS OF THIS LICENSE
- <p>The Free Software Foundation may publish new, revised versions
- of the GNU Free Documentation License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns. See
- <a class="uref" href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>.
- </p>
- <p>Each version of the License is given a distinguishing version number.
- If the Document specifies that a particular numbered version of this
- License “or any later version” applies to it, you have the option of
- following the terms and conditions either of that specified version or
- of any later version that has been published (not as a draft) by the
- Free Software Foundation. If the Document does not specify a version
- number of this License, you may choose any version ever published (not
- as a draft) by the Free Software Foundation. If the Document
- specifies that a proxy can decide which future versions of this
- License can be used, that proxy’s public statement of acceptance of a
- version permanently authorizes you to choose that version for the
- Document.
- </p>
- </li><li> RELICENSING
- <p>“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
- World Wide Web server that publishes copyrightable works and also
- provides prominent facilities for anybody to edit those works. A
- public wiki that anybody can edit is an example of such a server. A
- “Massive Multiauthor Collaboration” (or “MMC”) contained in the
- site means any set of copyrightable works thus published on the MMC
- site.
- </p>
- <p>“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
- license published by Creative Commons Corporation, a not-for-profit
- corporation with a principal place of business in San Francisco,
- California, as well as future copyleft versions of that license
- published by that same organization.
- </p>
- <p>“Incorporate” means to publish or republish a Document, in whole or
- in part, as part of another Document.
- </p>
- <p>An MMC is “eligible for relicensing” if it is licensed under this
- License, and if all works that were first published under this License
- somewhere other than this MMC, and subsequently incorporated in whole
- or in part into the MMC, (1) had no cover texts or invariant sections,
- and (2) were thus incorporated prior to November 1, 2008.
- </p>
- <p>The operator of an MMC Site may republish an MMC contained in the site
- under CC-BY-SA on the same site at any time before August 1, 2009,
- provided the MMC is eligible for relicensing.
- </p>
- </li></ol>
- <h3 class="heading" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"><span>ADDENDUM: How to use this License for your documents<a class="copiable-link" href="#ADDENDUM_003a-How-to-use-this-License-for-your-documents"> ¶</a></span></h3>
- <p>To use this License in a document you have written, include a copy of
- the License in the document and put the following copyright and
- license notices just after the title page:
- </p>
- <div class="example smallexample">
- <div class="group"><pre class="example-preformatted"> Copyright (C) <var class="var">year</var> <var class="var">your name</var>.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
- Texts. A copy of the license is included in the section entitled ``GNU
- Free Documentation License''.
- </pre></div></div>
- <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
- replace the “with…Texts.” line with this:
- </p>
- <div class="example smallexample">
- <div class="group"><pre class="example-preformatted"> with the Invariant Sections being <var class="var">list their titles</var>, with
- the Front-Cover Texts being <var class="var">list</var>, and with the Back-Cover Texts
- being <var class="var">list</var>.
- </pre></div></div>
- <p>If you have Invariant Sections without Cover Texts, or some other
- combination of the three, merge those two alternatives to suit the
- situation.
- </p>
- <p>If your document contains nontrivial examples of program code, we
- recommend releasing these examples in parallel under your choice of
- free software license, such as the GNU General Public License,
- to permit their use in free software.
- </p>
- <hr>
- </div>
- <div class="unnumbered-level-extent" id="Index">
- <div class="nav-panel">
- <p>
- Previous: <a href="#GNU-Free-Documentation-License" accesskey="p" rel="prev">GNU Free Documentation License</a> [<a href="#Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <h2 class="unnumbered" id="Index-1"><span>Index<a class="copiable-link" href="#Index-1"> ¶</a></span></h2>
- <div class="printindex cp-printindex">
- <table class="cp-letters-header-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Index_cp_letter-A"><b>A</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-B"><b>B</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-C"><b>C</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-E"><b>E</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-F"><b>F</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-G"><b>G</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-H"><b>H</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-I"><b>I</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-L"><b>L</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-M"><b>M</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-P"><b>P</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-R"><b>R</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-S"><b>S</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-T"><b>T</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-U"><b>U</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-V"><b>V</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-W"><b>W</b></a>
-
- </td></tr></table>
- <table class="cp-entries-printindex" border="0">
- <tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-A">A</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-a-quick-glance-at-dragora">a quick glance at dragora</a></td><td class="printindex-index-section"><a href="#A-quick-glance-at-Dragora">A quick glance at Dragora</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-about-this-handbook">about this handbook</a></td><td class="printindex-index-section"><a href="#About-this-handbook">About this handbook</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-B">B</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-boot-options-from-live-medium">boot options from live medium</a></td><td class="printindex-index-section"><a href="#Boot-options-from-live-medium">Boot options from live medium</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-C">C</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-configuration-file">configuration file</a></td><td class="printindex-index-section"><a href="#The-qirc-file">The qirc file</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-contributing-to-dragora">contributing to dragora</a></td><td class="printindex-index-section"><a href="#Contributing-to-Dragora">Contributing to Dragora</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-E">E</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-environment-variables">environment variables</a></td><td class="printindex-index-section"><a href="#Recipes">Recipes</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-exit-codes">exit codes</a></td><td class="printindex-index-section"><a href="#Qi-exit-status">Qi exit status</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-F">F</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-free-software">free software</a></td><td class="printindex-index-section"><a href="#What-is-Dragora_003f">What is Dragora?</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-G">G</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-getting-support">getting support</a></td><td class="printindex-index-section"><a href="#Getting-support">Getting support</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-gnu">gnu</a></td><td class="printindex-index-section"><a href="#What-is-Dragora_003f">What is Dragora?</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-H">H</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-handling-build-order">handling build order</a></td><td class="printindex-index-section"><a href="#Order-files">Order files</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-history">history</a></td><td class="printindex-index-section"><a href="#History">History</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-how-to-place-a-mirror">how to place a mirror</a></td><td class="printindex-index-section"><a href="#Contributing-to-Dragora">Contributing to Dragora</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-I">I</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-installing-the-system-manually-_0028as-an-alternative_0029">installing the system manually (as an alternative)</a></td><td class="printindex-index-section"><a href="#Installing-the-system-manually-_0028as-an-alternative_0029">Installing the system manually (as an alternative)</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-introduction-to-qi">introduction to qi</a></td><td class="printindex-index-section"><a href="#Introduction-to-Qi">Introduction to Qi</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-invocation">invocation</a></td><td class="printindex-index-section"><a href="#Invoking-qi">Invoking qi</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-L">L</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-linux-or-linux_002dlibre">linux or linux-libre</a></td><td class="printindex-index-section"><a href="#What-is-Dragora_003f">What is Dragora?</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-M">M</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-maintainers">maintainers</a></td><td class="printindex-index-section"><a href="#Maintainers">Maintainers</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-managing-packages">managing packages</a></td><td class="printindex-index-section"><a href="#Packages">Packages</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-P">P</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-blacklist">package blacklist</a></td><td class="printindex-index-section"><a href="#Packages">Packages</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-build">package build</a></td><td class="printindex-index-section"><a href="#Recipes">Recipes</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-conflicts">package conflicts</a></td><td class="printindex-index-section"><a href="#Packages">Packages</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-creation">package creation</a></td><td class="printindex-index-section"><a href="#Creating-packages">Creating packages</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-de_002dinstallation">package de-installation</a></td><td class="printindex-index-section"><a href="#Packages">Packages</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-examination">package examination</a></td><td class="printindex-index-section"><a href="#Examining-packages">Examining packages</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-installation">package installation</a></td><td class="printindex-index-section"><a href="#Packages">Packages</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-management-in-a-nutshell">package management in a nutshell</a></td><td class="printindex-index-section"><a href="#Package-management-in-a-nutshell">Package management in a nutshell</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-management-in-dragora">package management in dragora</a></td><td class="printindex-index-section"><a href="#Introduction-to-package-management-in-Dragora">Introduction to package management in Dragora</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-package-upgrade">package upgrade</a></td><td class="printindex-index-section"><a href="#Packages">Packages</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-R">R</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-recipes">recipes</a></td><td class="printindex-index-section"><a href="#Recipes">Recipes</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-releases">releases</a></td><td class="printindex-index-section"><a href="#History">History</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-revision-history-_0028changelog_0029">revision history (changelog)</a></td><td class="printindex-index-section"><a href="#Revision-history-_0028ChangeLog_0029">Revision history (ChangeLog)</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-S">S</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-special-variables">special variables</a></td><td class="printindex-index-section"><a href="#Recipes">Recipes</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-T">T</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-the-meta-file">the meta file</a></td><td class="printindex-index-section"><a href="#Recipes">Recipes</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-typographic-conventions">typographic conventions</a></td><td class="printindex-index-section"><a href="#About-this-handbook">About this handbook</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-U">U</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-using-dragora_002dinstaller">using dragora-installer</a></td><td class="printindex-index-section"><a href="#Using-dragora_002dinstaller">Using dragora-installer</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-using-third_002dparty-free-software">using third-party free software</a></td><td class="printindex-index-section"><a href="#Using-third_002dparty-free-software">Using third-party free software</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-V">V</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-variables">variables</a></td><td class="printindex-index-section"><a href="#Recipes">Recipes</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- <tr><th id="Index_cp_letter-W">W</th></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-what-is-dragora_003f">what is dragora?</a></td><td class="printindex-index-section"><a href="#What-is-Dragora_003f">What is Dragora?</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-why-should-I-use-dragora_003f">why should I use dragora?</a></td><td class="printindex-index-section"><a href="#Why-should-I-use-Dragora_003f">Why should I use Dragora?</a></td></tr>
- <tr><td></td><td class="printindex-index-entry"><a href="#index-writing-recipes">writing recipes</a></td><td class="printindex-index-section"><a href="#Recipes">Recipes</a></td></tr>
- <tr><td colspan="3"><hr></td></tr>
- </table>
- <table class="cp-letters-footer-printindex"><tr><th>Jump to: </th><td><a class="summary-letter-printindex" href="#Index_cp_letter-A"><b>A</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-B"><b>B</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-C"><b>C</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-E"><b>E</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-F"><b>F</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-G"><b>G</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-H"><b>H</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-I"><b>I</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-L"><b>L</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-M"><b>M</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-P"><b>P</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-R"><b>R</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-S"><b>S</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-T"><b>T</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-U"><b>U</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-V"><b>V</b></a>
-
- <a class="summary-letter-printindex" href="#Index_cp_letter-W"><b>W</b></a>
-
- </td></tr></table>
- </div>
- </div>
- </div>
- <div class="footnotes-segment">
- <hr>
- <h4 class="footnotes-heading">Footnotes</h4>
- <h5 class="footnote-body-heading"><a id="FOOT1" href="#DOCF1">(1)</a></h5>
- <p>For more details about tarlz and the
- lzip format, visit <a class="url" href="https://lzip.nongnu.org/tarlz.html">https://lzip.nongnu.org/tarlz.html</a>.</p>
- <h5 class="footnote-body-heading"><a id="FOOT2" href="#DOCF2">(2)</a></h5>
- <p>The official guide for Graft can be found at
- <a class="url" href="https://peters.gormand.com.au/Home/tools/graft/graft.html">https://peters.gormand.com.au/Home/tools/graft/graft.html</a>.</p>
- <h5 class="footnote-body-heading"><a id="FOOT3" href="#DOCF3">(3)</a></h5>
- <p>About the ‘<samp class="samp">--bsolid</samp>’ granularity option of tarlz(1),
- <a class="url" href="https://www.nongnu.org/lzip/manual/tarlz_manual.html#g_t_002d_002dbsolid">https://www.nongnu.org/lzip/manual/tarlz_manual.html#g_t_002d_002dbsolid</a>.</p>
- <h5 class="footnote-body-heading"><a id="FOOT4" href="#DOCF4">(4)</a></h5>
- <p>The proposal for ‘<samp class="samp">license</samp>’ was made by Richard M. Stallman at
- <a class="url" href="https://lists.gnu.org/archive/html/gnu-linux-libre/2016-05/msg00003.html">https://lists.gnu.org/archive/html/gnu-linux-libre/2016-05/msg00003.html</a>.</p>
- </div>
- </body>
- </html>
|