| 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" |
| 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ |
| 4 | <!ENTITY % aptent SYSTEM "apt.ent"> %aptent; |
| 5 | <!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment; |
| 6 | <!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor; |
| 7 | ]> |
| 8 | |
| 9 | <book lang="en"> |
| 10 | |
| 11 | <title>APT User's Guide</title> |
| 12 | |
| 13 | <bookinfo> |
| 14 | |
| 15 | <authorgroup> |
| 16 | <author> |
| 17 | <personname>Jason Gunthorpe</personname><email>jgg@debian.org</email> |
| 18 | </author> |
| 19 | </authorgroup> |
| 20 | |
| 21 | <releaseinfo>Version &apt-product-version;</releaseinfo> |
| 22 | |
| 23 | <abstract> |
| 24 | <para> |
| 25 | This document provides an overview of how to use the the APT package manager. |
| 26 | </para> |
| 27 | </abstract> |
| 28 | |
| 29 | <copyright><year>1998</year><holder>Jason Gunthorpe</holder></copyright> |
| 30 | |
| 31 | <legalnotice> |
| 32 | <title>License Notice</title> |
| 33 | <para> |
| 34 | "APT" and this document are free software; you can redistribute them and/or |
| 35 | modify them under the terms of the GNU General Public License as published by |
| 36 | the Free Software Foundation; either version 2 of the License, or (at your |
| 37 | option) any later version. |
| 38 | </para> |
| 39 | </legalnotice> |
| 40 | |
| 41 | <legalnotice> |
| 42 | <para> |
| 43 | For more details, on Debian systems, see the file |
| 44 | /usr/share/common-licenses/GPL for the full license. |
| 45 | </para> |
| 46 | </legalnotice> |
| 47 | |
| 48 | </bookinfo> |
| 49 | |
| 50 | <chapter id="ch1"><title>General</title> |
| 51 | <para> |
| 52 | The APT package currently contains two sections, the APT |
| 53 | <command>dselect</command> method and the <command>apt-get</command> command |
| 54 | line user interface. Both provide a way to install and remove packages as well |
| 55 | as download new packages from the Internet. |
| 56 | </para> |
| 57 | |
| 58 | <section id="s1.1"><title>Anatomy of the Package System</title> |
| 59 | <para> |
| 60 | The Debian packaging system has a large amount of information associated with |
| 61 | each package to help assure that it integrates cleanly and easily into the |
| 62 | system. The most prominent of its features is the dependency system. |
| 63 | </para> |
| 64 | <para> |
| 65 | The dependency system allows individual programs to make use of shared elements |
| 66 | in the system such as libraries. It simplifies placing infrequently used |
| 67 | portions of a program in separate packages to reduce the number of things the |
| 68 | average user is required to install. Also, it allows for choices in mail |
| 69 | transport agents, X servers and so on. |
| 70 | </para> |
| 71 | <para> |
| 72 | The first step to understanding the dependency system is to grasp the concept |
| 73 | of a simple dependency. The meaning of a simple dependency is that a package |
| 74 | requires another package to be installed at the same time to work properly. |
| 75 | </para> |
| 76 | <para> |
| 77 | For instance, mailcrypt is an emacs extension that aids in encrypting email |
| 78 | with GPG. Without GPGP installed mailcrypt is useless, so mailcrypt has a |
| 79 | simple dependency on GPG. Also, because it is an emacs extension it has a |
| 80 | simple dependency on emacs, without emacs it is completely useless. |
| 81 | </para> |
| 82 | <para> |
| 83 | The other important dependency to understand is a conflicting dependency. It |
| 84 | means that a package, when installed with another package, will not work and |
| 85 | may possibly be extremely harmful to the system. As an example consider a mail |
| 86 | transport agent such as sendmail, exim or qmail. It is not possible to have |
| 87 | two mail transport agents installed because both need to listen to the network |
| 88 | to receive mail. Attempting to install two will seriously damage the system so |
| 89 | all mail transport agents have a conflicting dependency with all other mail |
| 90 | transport agents. |
| 91 | </para> |
| 92 | <para> |
| 93 | As an added complication there is the possibility for a package to pretend to |
| 94 | be another package. Consider that exim and sendmail for many intents are |
| 95 | identical, they both deliver mail and understand a common interface. Hence, |
| 96 | the package system has a way for them to declare that they are both |
| 97 | mail-transport-agents. So, exim and sendmail both declare that they provide a |
| 98 | mail-transport-agent and other packages that need a mail transport agent depend |
| 99 | on mail-transport-agent. This can add a great deal of confusion when trying to |
| 100 | manually fix packages. |
| 101 | </para> |
| 102 | <para> |
| 103 | At any given time a single dependency may be met by packages that are already |
| 104 | installed or it may not be. APT attempts to help resolve dependency issues by |
| 105 | providing a number of automatic algorithms that help in selecting packages for |
| 106 | installation. |
| 107 | </para> |
| 108 | </section> |
| 109 | |
| 110 | </chapter> |
| 111 | |
| 112 | <chapter id="ch2"><title>apt-get</title> |
| 113 | <para> |
| 114 | <command>apt-get</command> provides a simple way to install packages from the |
| 115 | command line. Unlike <command>dpkg</command>, <command>apt-get</command> does |
| 116 | not understand .deb files, it works with the package's proper name and can only |
| 117 | install .deb archives from a <emphasis>Source</emphasis>. |
| 118 | </para> |
| 119 | <para> |
| 120 | The first <footnote><para> If you are using an http proxy server you must set |
| 121 | the http_proxy environment variable first, see sources.list(5) </para> |
| 122 | </footnote> thing that should be done before using <command>apt-get</command> |
| 123 | is to fetch the package lists from the <emphasis>Sources</emphasis> so that it |
| 124 | knows what packages are available. This is done with <literal>apt-get |
| 125 | update</literal>. For instance, |
| 126 | </para> |
| 127 | <screen> |
| 128 | # apt-get update |
| 129 | Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages |
| 130 | Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages |
| 131 | Reading Package Lists... Done |
| 132 | Building Dependency Tree... Done |
| 133 | </screen> |
| 134 | <para> |
| 135 | Once updated there are several commands that can be used: |
| 136 | </para> |
| 137 | <variablelist> |
| 138 | <varlistentry> |
| 139 | <term>upgrade</term> |
| 140 | <listitem> |
| 141 | <para> |
| 142 | Upgrade will attempt to gently upgrade the whole system. Upgrade will never |
| 143 | install a new package or remove an existing package, nor will it ever upgrade a |
| 144 | package that might cause some other package to break. This can be used daily |
| 145 | to relatively safely upgrade the system. Upgrade will list all of the packages |
| 146 | that it could not upgrade, this usually means that they depend on new packages |
| 147 | or conflict with some other package. <command>dselect</command> or |
| 148 | <literal>apt-get install</literal> can be used to force these packages to |
| 149 | install. |
| 150 | </para> |
| 151 | </listitem> |
| 152 | </varlistentry> |
| 153 | <varlistentry> |
| 154 | <term>install</term> |
| 155 | <listitem> |
| 156 | <para> |
| 157 | Install is used to install packages by name. The package is automatically |
| 158 | fetched and installed. This can be useful if you already know the name of the |
| 159 | package to install and do not want to go into a GUI to select it. Any number |
| 160 | of packages may be passed to install, they will all be fetched. Install |
| 161 | automatically attempts to resolve dependency problems with the listed packages |
| 162 | and will print a summary and ask for confirmation if anything other than its |
| 163 | arguments are changed. |
| 164 | </para> |
| 165 | </listitem> |
| 166 | </varlistentry> |
| 167 | <varlistentry> |
| 168 | <term>dist-upgrade</term> |
| 169 | <listitem> |
| 170 | <para> |
| 171 | Dist-upgrade is a complete upgrader designed to simplify upgrading between |
| 172 | releases of Debian. It uses a sophisticated algorithm to determine the best |
| 173 | set of packages to install, upgrade and remove to get as much of the system to |
| 174 | the newest release. In some situations it may be desired to use dist-upgrade |
| 175 | rather than spend the time manually resolving dependencies in |
| 176 | <command>dselect</command>. Once dist-upgrade has completed then |
| 177 | <command>dselect</command> can be used to install any packages that may have |
| 178 | been left out. |
| 179 | </para> |
| 180 | <para> |
| 181 | It is important to closely look at what dist-upgrade is going to do, its |
| 182 | decisions may sometimes be quite surprising. |
| 183 | </para> |
| 184 | </listitem> |
| 185 | </varlistentry> |
| 186 | </variablelist> |
| 187 | <para> |
| 188 | <command>apt-get</command> has several command line options that are detailed |
| 189 | in its man page, |
| 190 | <citerefentry><refentrytitle>apt-get</refentrytitle><manvolnum>8</manvolnum></citerefentry>. The |
| 191 | most useful option is <literal>-d</literal> which does not install the |
| 192 | fetched files. If the system has to download a large number of package it |
| 193 | would be undesired to start installing them in case something goes wrong. When |
| 194 | <literal>-d</literal> is used the downloaded archives can be installed by |
| 195 | simply running the command that caused them to be downloaded again without |
| 196 | <literal>-d</literal>. |
| 197 | </para> |
| 198 | </chapter> |
| 199 | |
| 200 | <chapter id="ch3"><title>DSelect</title> |
| 201 | <para> |
| 202 | The APT <command>dselect</command> method provides the complete |
| 203 | APT system with the <command>dselect</command> package selection |
| 204 | GUI. <command>dselect</command> is used to select the packages to be |
| 205 | installed or removed and APT actually installs them. |
| 206 | </para> |
| 207 | <para> |
| 208 | To enable the APT method you need to select [A]ccess in |
| 209 | <command>dselect</command> and then choose the APT method. You will be |
| 210 | prompted for a set of <emphasis>Sources</emphasis> which are places to fetch |
| 211 | archives from. These can be remote Internet sites, local Debian mirrors or |
| 212 | CD-ROMs. Each source can provide a fragment of the total Debian archive, APT |
| 213 | will automatically combine them to form a complete set of packages. If you |
| 214 | have a CD-ROM then it is a good idea to specify it first and then specify a |
| 215 | mirror so that you have access to the latest bug fixes. APT will automatically |
| 216 | use packages on your CD-ROM before downloading from the Internet. |
| 217 | </para> |
| 218 | <screen> |
| 219 | Set up a list of distribution source locations |
| 220 | |
| 221 | Please give the base URL of the debian distribution. |
| 222 | The access schemes I know about are: http file |
| 223 | |
| 224 | For example: |
| 225 | file:/mnt/debian, |
| 226 | ftp://ftp.debian.org/debian, |
| 227 | http://ftp.de.debian.org/debian, |
| 228 | |
| 229 | |
| 230 | URL [http://llug.sep.bnl.gov/debian]: |
| 231 | </screen> |
| 232 | <para> |
| 233 | The <emphasis>Sources</emphasis> setup starts by asking for the base of the |
| 234 | Debian archive, defaulting to a HTTP mirror. Next it asks for the distribution |
| 235 | to get. |
| 236 | </para> |
| 237 | <screen> |
| 238 | Please give the distribution tag to get or a path to the |
| 239 | package file ending in a /. The distribution |
| 240 | tags are typically something like: stable unstable testing non-US |
| 241 | |
| 242 | Distribution [stable]: |
| 243 | </screen> |
| 244 | <para> |
| 245 | The distribution refers to the Debian version in the archive, |
| 246 | <emphasis>stable</emphasis> refers to the latest released version |
| 247 | and <emphasis>unstable</emphasis> refers to the developmental |
| 248 | version. <emphasis>non-US</emphasis> is only available on some mirrors |
| 249 | and refers to packages that contain encryption technology or other |
| 250 | things that cannot be exported from the United States. Importing these |
| 251 | packages into the US is legal however. |
| 252 | </para> |
| 253 | <screen> |
| 254 | Please give the components to get |
| 255 | The components are typically something like: main contrib non-free |
| 256 | |
| 257 | Components [main contrib non-free]: |
| 258 | </screen> |
| 259 | <para> |
| 260 | The components list refers to the list of sub distributions to fetch. The |
| 261 | distribution is split up based on software licenses, main being DFSG free |
| 262 | packages while contrib and non-free contain things that have various |
| 263 | restrictions placed on their use and distribution. |
| 264 | </para> |
| 265 | <para> |
| 266 | Any number of sources can be added, the setup script will continue to prompt |
| 267 | until you have specified all that you want. |
| 268 | </para> |
| 269 | <para> |
| 270 | Before starting to use <command>dselect</command> it is necessary to update |
| 271 | the available list by selecting [U]pdate from the menu. This is a superset of |
| 272 | <literal>apt-get update</literal> that makes the fetched information available |
| 273 | to <command>dselect</command>. [U]pdate must be performed even if |
| 274 | <literal>apt-get update</literal> has been run before. |
| 275 | </para> |
| 276 | <para> |
| 277 | You can then go on and make your selections using [S]elect and then perform |
| 278 | the installation using [I]nstall. When using the APT method the [C]onfig and |
| 279 | [R]emove commands have no meaning, the [I]nstall command performs both of |
| 280 | them together. |
| 281 | </para> |
| 282 | <para> |
| 283 | By default APT will automatically remove the package (.deb) files once they |
| 284 | have been successfully installed. To change this behavior place |
| 285 | <literal>Dselect::clean "prompt";</literal> in /etc/apt/apt.conf. |
| 286 | </para> |
| 287 | </chapter> |
| 288 | |
| 289 | <chapter id="ch4"><title>The Interface</title> |
| 290 | <para> |
| 291 | Both that APT <command>dselect</command> method and <command>apt-get</command> |
| 292 | share the same interface. It is a simple system that generally tells you what |
| 293 | it will do and then goes and does it. <footnote><para> The |
| 294 | <command>dselect</command> method actually is a set of wrapper scripts to |
| 295 | <command>apt-get</command>. The method actually provides more functionality |
| 296 | than is present in <command>apt-get</command> alone. </para> </footnote> After |
| 297 | printing out a summary of what will happen APT then will print out some |
| 298 | informative status messages so that you can estimate how far along it is and |
| 299 | how much is left to do. |
| 300 | </para> |
| 301 | |
| 302 | <section id="s4.1"><title>Startup</title> |
| 303 | <para> |
| 304 | Before all operations except update, APT performs a number of actions |
| 305 | to prepare its internal state. It also does some checks of the system's |
| 306 | state. At any time these operations can be performed by running |
| 307 | <literal>apt-get check</literal>. |
| 308 | </para> |
| 309 | <screen> |
| 310 | # apt-get check |
| 311 | Reading Package Lists... Done |
| 312 | Building Dependency Tree... Done |
| 313 | </screen> |
| 314 | <para> |
| 315 | The first thing it does is read all the package files into memory. APT uses a |
| 316 | caching scheme so this operation will be faster the second time it is run. If |
| 317 | some of the package files are not found then they will be ignored and a |
| 318 | warning will be printed when apt-get exits. |
| 319 | </para> |
| 320 | <para> |
| 321 | The final operation performs a detailed analysis of the system's |
| 322 | dependencies. It checks every dependency of every installed or unpacked |
| 323 | package and considers if it is OK. Should this find a problem then a report |
| 324 | will be printed out and <command>apt-get</command> will refuse to run. |
| 325 | </para> |
| 326 | <screen> |
| 327 | # apt-get check |
| 328 | Reading Package Lists... Done |
| 329 | Building Dependency Tree... Done |
| 330 | You might want to run apt-get -f install' to correct these. |
| 331 | Sorry, but the following packages have unmet dependencies: |
| 332 | 9fonts: Depends: xlib6g but it is not installed |
| 333 | uucp: Depends: mailx but it is not installed |
| 334 | blast: Depends: xlib6g (>= 3.3-5) but it is not installed |
| 335 | adduser: Depends: perl-base but it is not installed |
| 336 | aumix: Depends: libgpmg1 but it is not installed |
| 337 | debiandoc-sgml: Depends: sgml-base but it is not installed |
| 338 | bash-builtins: Depends: bash (>= 2.01) but 2.0-3 is installed |
| 339 | cthugha: Depends: svgalibg1 but it is not installed |
| 340 | Depends: xlib6g (>= 3.3-5) but it is not installed |
| 341 | libreadlineg2: Conflicts:libreadline2 (<< 2.1-2.1) |
| 342 | </screen> |
| 343 | <para> |
| 344 | In this example the system has many problems, including a serious problem with |
| 345 | libreadlineg2. For each package that has unmet dependencies a line is printed |
| 346 | out indicating the package with the problem and the dependencies that are |
| 347 | unmet. A short explanation of why the package has a dependency problem is also |
| 348 | included. |
| 349 | </para> |
| 350 | <para> |
| 351 | There are two ways a system can get into a broken state like this. The |
| 352 | first is caused by <command>dpkg</command> missing some subtle relationships |
| 353 | between packages when performing upgrades. <footnote><para> APT however |
| 354 | considers all known dependencies and attempts to prevent broken |
| 355 | packages </para> </footnote>. The second is if a package installation |
| 356 | fails during an operation. In this situation a package may have been |
| 357 | unpacked without its dependents being installed. |
| 358 | </para> |
| 359 | <para> |
| 360 | The second situation is much less serious than the first because APT places |
| 361 | certain constraints on the order that packages are installed. In both cases |
| 362 | supplying the <literal>-f</literal> option to <command>apt-get</command> |
| 363 | will cause APT to deduce a possible solution to the problem and then |
| 364 | continue on. The APT <command>dselect</command> method always supplies |
| 365 | the <literal>-f</literal> option to allow for easy continuation of failed |
| 366 | maintainer scripts. |
| 367 | </para> |
| 368 | <para> |
| 369 | However, if the <literal>-f</literal> option is used to correct a seriously |
| 370 | broken system caused by the first case then it is possible that it will either |
| 371 | fail immediately or the installation sequence will fail. In either case it is |
| 372 | necessary to manually use dpkg (possibly with forcing options) to correct the |
| 373 | situation enough to allow APT to proceed. |
| 374 | </para> |
| 375 | </section> |
| 376 | |
| 377 | <section id="s4.2"><title>The Status Report</title> |
| 378 | <para> |
| 379 | Before proceeding <command>apt-get</command> will present a report on what will |
| 380 | happen. Generally the report reflects the type of operation being performed |
| 381 | but there are several common elements. In all cases the lists reflect the |
| 382 | final state of things, taking into account the <literal>-f</literal> option |
| 383 | and any other relevant activities to the command being executed. |
| 384 | </para> |
| 385 | |
| 386 | <section id="s4.2.1"><title>The Extra Package list</title> |
| 387 | <screen> |
| 388 | The following extra packages will be installed: |
| 389 | libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl |
| 390 | mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base |
| 391 | bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy |
| 392 | squake pgp-i python-base debmake ldso perl libreadlineg2 |
| 393 | ssh |
| 394 | </screen> |
| 395 | <para> |
| 396 | The Extra Package list shows all of the packages that will be installed or |
| 397 | upgraded in excess of the ones mentioned on the command line. It is only |
| 398 | generated for an <literal>install</literal> command. The listed packages are |
| 399 | often the result of an Auto Install. |
| 400 | </para> |
| 401 | </section> |
| 402 | |
| 403 | <section id="s4.2.2"><title>The Packages to Remove</title> |
| 404 | <screen> |
| 405 | The following packages will be REMOVED: |
| 406 | xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix |
| 407 | xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel |
| 408 | xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid |
| 409 | nas xpilot xfig |
| 410 | </screen> |
| 411 | <para> |
| 412 | The Packages to Remove list shows all of the packages that will be removed |
| 413 | from the system. It can be shown for any of the operations and should be given |
| 414 | a careful inspection to ensure nothing important is to be taken off. The |
| 415 | <literal>-f</literal> option is especially good at generating packages to |
| 416 | remove so extreme care should be used in that case. The list may contain |
| 417 | packages that are going to be removed because they are only partially |
| 418 | installed, possibly due to an aborted installation. |
| 419 | </para> |
| 420 | </section> |
| 421 | |
| 422 | <section id="s4.2.3"><title>The New Packages list</title> |
| 423 | <screen> |
| 424 | The following NEW packages will installed: |
| 425 | zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base |
| 426 | </screen> |
| 427 | <para> |
| 428 | The New Packages list is simply a reminder of what will happen. The packages |
| 429 | listed are not presently installed in the system but will be when APT is done. |
| 430 | </para> |
| 431 | </section> |
| 432 | |
| 433 | <section id="s4.2.4"><title>The Kept Back list</title> |
| 434 | <screen> |
| 435 | The following packages have been kept back |
| 436 | compface man-db tetex-base msql libpaper svgalib1 |
| 437 | gs snmp arena lynx xpat2 groff xscreensaver |
| 438 | </screen> |
| 439 | <para> |
| 440 | Whenever the whole system is being upgraded there is the possibility that new |
| 441 | versions of packages cannot be installed because they require new things or |
| 442 | conflict with already installed things. In this case the package will appear |
| 443 | in the Kept Back list. The best way to convince packages listed there to |
| 444 | install is with <literal>apt-get install</literal> or by using |
| 445 | <command>dselect</command> to resolve their problems. |
| 446 | </para> |
| 447 | </section> |
| 448 | |
| 449 | <section id="s4.2.5"><title>Held Packages warning</title> |
| 450 | <screen> |
| 451 | The following held packages will be changed: |
| 452 | cvs |
| 453 | </screen> |
| 454 | <para> |
| 455 | Sometimes you can ask APT to install a package that is on hold, in such a case |
| 456 | it prints out a warning that the held package is going to be changed. This |
| 457 | should only happen during dist-upgrade or install. |
| 458 | </para> |
| 459 | </section> |
| 460 | |
| 461 | <section id="s4.2.6"><title>Final summary</title> |
| 462 | <para> |
| 463 | Finally, APT will print out a summary of all the changes that will occur. |
| 464 | </para> |
| 465 | <screen> |
| 466 | 206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded. |
| 467 | 12 packages not fully installed or removed. |
| 468 | Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used. |
| 469 | </screen> |
| 470 | <para> |
| 471 | The first line of the summary simply is a reduced version of all of the lists |
| 472 | and includes the number of upgrades - that is packages already installed that |
| 473 | have new versions available. The second line indicates the number of poorly |
| 474 | configured packages, possibly the result of an aborted installation. The final |
| 475 | line shows the space requirements that the installation needs. The first pair |
| 476 | of numbers refer to the size of the archive files. The first number indicates |
| 477 | the number of bytes that must be fetched from remote locations and the second |
| 478 | indicates the total size of all the archives required. The next number |
| 479 | indicates the size difference between the presently installed packages and the |
| 480 | newly installed packages. It is roughly equivalent to the space required in |
| 481 | /usr after everything is done. If a large number of packages are being removed |
| 482 | then the value may indicate the amount of space that will be freed. |
| 483 | </para> |
| 484 | <para> |
| 485 | Some other reports can be generated by using the -u option to show packages to |
| 486 | upgrade, they are similar to the previous examples. |
| 487 | </para> |
| 488 | </section> |
| 489 | |
| 490 | </section> |
| 491 | |
| 492 | <section id="s4.3"><title>The Status Display</title> |
| 493 | <para> |
| 494 | During the download of archives and package files APT prints out a series of |
| 495 | status messages. |
| 496 | </para> |
| 497 | <screen> |
| 498 | # apt-get update |
| 499 | Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages |
| 500 | Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages |
| 501 | Hit http://llug.sep.bnl.gov/debian/ testing/main Packages |
| 502 | Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages |
| 503 | Get:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages |
| 504 | 11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s |
| 505 | </screen> |
| 506 | <para> |
| 507 | The lines starting with <emphasis>Get</emphasis> are printed out when APT |
| 508 | begins to fetch a file while the last line indicates the progress of the |
| 509 | download. The first percent value on the progress line indicates the total |
| 510 | percent done of all files. Unfortunately since the size of the Package files |
| 511 | is unknown <literal>apt-get update</literal> estimates the percent done which |
| 512 | causes some inaccuracies. |
| 513 | </para> |
| 514 | <para> |
| 515 | The next section of the status line is repeated once for each download |
| 516 | thread and indicates the operation being performed and some useful |
| 517 | information about what is happening. Sometimes this section will simply |
| 518 | read <emphasis>Forking</emphasis> which means the OS is loading the download |
| 519 | module. The first word after the [ is the fetch number as shown on the |
| 520 | history lines. The next word is the short form name of the object being |
| 521 | downloaded. For archives it will contain the name of the package that is |
| 522 | being fetched. |
| 523 | </para> |
| 524 | <para> |
| 525 | Inside of the single quote is an informative string indicating the progress of |
| 526 | the negotiation phase of the download. Typically it progresses from |
| 527 | <emphasis>Connecting</emphasis> to <emphasis>Waiting for file</emphasis> to |
| 528 | <emphasis>Downloading</emphasis> or <emphasis>Resuming</emphasis>. The final |
| 529 | value is the number of bytes downloaded from the remote site. Once the |
| 530 | download begins this is represented as <literal>102/10.2k</literal> indicating |
| 531 | that 102 bytes have been fetched and 10.2 kilobytes is expected. The total |
| 532 | size is always shown in 4 figure notation to preserve space. After the size |
| 533 | display is a percent meter for the file itself. The second last element is the |
| 534 | instantaneous average speed. This values is updated every 5 seconds and |
| 535 | reflects the rate of data transfer for that period. Finally is shown the |
| 536 | estimated transfer time. This is updated regularly and reflects the time to |
| 537 | complete everything at the shown transfer rate. |
| 538 | </para> |
| 539 | <para> |
| 540 | The status display updates every half second to provide a constant feedback on |
| 541 | the download progress while the Get lines scroll back whenever a new file is |
| 542 | started. Since the status display is constantly updated it is unsuitable for |
| 543 | logging to a file, use the <literal>-q</literal> option to remove the status |
| 544 | display. |
| 545 | </para> |
| 546 | </section> |
| 547 | |
| 548 | <section id="s4.4"><title>Dpkg</title> |
| 549 | <para> |
| 550 | APT uses <command>dpkg</command> for installing the archives and will |
| 551 | switch over to the <command>dpkg</command> interface once downloading is |
| 552 | completed. <command>dpkg</command> will also ask a number of questions as |
| 553 | it processes the packages and the packages themselves may also ask several |
| 554 | questions. Before each question there is usually a description of what it |
| 555 | is asking and the questions are too varied to discuss completely here. |
| 556 | </para> |
| 557 | </section> |
| 558 | |
| 559 | </chapter> |
| 560 | |
| 561 | </book> |